QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 355|回复: 4

关于课时22双向链表的问题

[复制链接]
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2016-8-4 12:10:04 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
#include<stdio.h>
#include<stdlib.h>

#define OK    1
#define ERROR 0

typedef int status;

typedef char QQQ;

typedef struct Node
{
        QQQ data;
        struct Node *prior;
        struct Node *next;
}pNode,*linklist;

status initlist(linklist *L)
{
        pNode *p,*q;
       
        int i;
       
        *L=(linklist)malloc(sizeof(pNode));
        if(!(*L))
        {
                return ERROR;
        }
       
        (*L)->next=(*L)->prior=NULL;
        p=(*L);
        for(i=0;i<26;i++)
        {
                q=(linklist)malloc(sizeof(pNode));
                if(!(*L))
        {
                return ERROR;
        }
                q->data='A'+i;
                q->prior=p;
                q->next=p->next;
                p->next=q;
               
                p=q;
               
        }
       
        p->next=(*L)->next;
        (*L)->next->prior=p;
       
        return OK;
}
void Caeser(linklist *L,int i)
{
        if(i>0)
        {
                do{
                        (*L)=(*L)->next;
                }while(--i);
        }
        if(i<0)
        {
                do{
                        (*L)=(*L)->next;
                }while(++i);
        }       
}

int main()
{
        linklist L;
        int i,n;
        initlist(&L);
        printf("请输入正数n:\n");
         scanf("%d",&n);
         printf("\n");
        Caeser(&L,n);
        for(i=0;i<26;i++)
        {
                  L=L->next;
                  printf("%c",L->data);         
         }
         return 0;
}

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
 楼主| 发表于 2016-8-4 12:11:12 | 显示全部楼层
    if(i>0)
        {
                do{
                        (*L)=(*L)->next;
                }while(--i);
        }
        if(i<0)
        {
                do{
                        (*L)=(*L)->next;
                }while(++i);
        }      

这一块小甲鱼课堂上的代码两个最后执行结果是一样的。请问怎么能更改
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:24 天
连续签到:1 天
最佳答案
0 
发表于 2016-8-4 18:22:26 | 显示全部楼层
http://blog.csdn.net/u014488381/article/details/41280233
楼主想表达的是这个意思吧、创建链表和负数处理都出了问题、看这个博客吧、
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:3 天
连续签到:2 天
最佳答案
0 
发表于 2017-6-21 09:45:54 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:4 天
连续签到:2 天
最佳答案
0 
发表于 2017-7-9 17:05:39 | 显示全部楼层
        if(i<0)
        {
                *L = (*L)->next->piror;
                while (i)
                {
                        *L = (*L)->piror;
                        i++;
                }
        }
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-7-22 10:43 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表