肥^o^帅 发表于 2018-11-30 19:57:11

看不出来哪里有问题

我看的懂错误提示,但是找不出错误在哪啊,好气

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

#define OK    1
#define ERROR 0

typedef char ElemType;
typedef int Status;
typedef struct DualNode{
      ElemType data;
      struct DualNode *prior;
      struct DualNode *next;
}DaulNode,*DuLinkList;

Status InitList(DuLinkList *L){
      DualNode *p,*q;
      int i;
      *L=(DuLinkList)malloc(sizeof(DualNode));
      if(!(L)){
                return ERROR;
      }
      (*L)->next=(*L)->prior=NULL;
      p=(*L);
      for(i-0;i<26;i++){
                q=(DualNode *)malloc(sizeof(DualNode));
                if(!q){
                        return ERROR;
                }
                q->data='A'+1;
                q->prior=p;
                q->next=p->next;
                p->next=q;
                p=q;
      }
      p->next=(*L)->next;
      (*L)->next->prior=p;
      return OK;
}

void Caesar(DuLinkList *L,int i){
      if(i>0){
                do{
                        (*L)=(*L)->next;
                }while(--i);
      }
      if(i<0){
                do{
                        (*L)=(*L)->next;
                }while(++i);
      }
}

int main(){
      DuLinkList L;
      int i,n;
      InitList(&L);
      printf("请输入一个整数:");
      scanf("%d",&n);
      printf("\n");
      Caesar(&L,n);
      for(i=0;i<26;i++){
                L=L->next;
                printf("%c",L->data)data;
      }
      return 0;
}

rencaixiaomeng 发表于 2018-11-30 20:18:49

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

#define OK    1
#define ERROR 0

typedef char ElemType;
typedef int Status;
typedef struct DualNode{
      ElemType data;
      struct DualNode *prior;
      struct DualNode *next;
}DaulNode,*DuLinkList;

Status InitList(DuLinkList *L){
      DualNode *p,*q;
      int i;
      *L=(DuLinkList)malloc(sizeof(DualNode));
      if(!(L)){
                return ERROR;
      }
      (*L)->next=(*L)->prior=NULL;
      p=(*L);
      for(i-0;i<26;i++){    //这里i-0,改成i=0
                q=(DualNode *)malloc(sizeof(DualNode));
                if(!q){
                        return ERROR;
                }
                q->data='A'+1;
                q->prior=p;
                q->next=p->next;
                p->next=q;
                p=q;
      }
      p->next=(*L)->next;
      (*L)->next->prior=p;
      return OK;
}

void Caesar(DuLinkList *L,int i){
      if(i>0){
                do{
                        (*L)=(*L)->next;
                }while(--i);
      }
      if(i<0){
                do{
                        (*L)=(*L)->next;
                }while(++i);
      }
}

int main(){
      DuLinkList L;
      int i,n;
      InitList(&L);
      printf("请输入一个整数:");
      scanf("%d",&n);
      printf("\n");
      Caesar(&L,n);
      for(i=0;i<26;i++){
                L=L->next;
                printf("%c",L->data)data;    //这里第二个data删掉,改成printf("%c",L->data);
      }
      return 0;
}

肥^o^帅 发表于 2018-11-30 20:29:30

rencaixiaomeng 发表于 2018-11-30 20:18
#include
#include



但是报错的那句DualNode没有定义还是存在问题啊,我就是为了问这个

rencaixiaomeng 发表于 2018-11-30 20:40:38

我的编译器可以正常编译,你这个应该要在每个DualNode前面加上 struct

wongyusing 发表于 2018-11-30 21:26:51

rencaixiaomeng 发表于 2018-11-30 20:40
我的编译器可以正常编译,你这个应该要在每个DualNode前面加上 struct

看到你的kululu头像,感觉他一直在发出git、git、git的奸笑声

肥^o^帅 发表于 2018-11-30 22:40:12

rencaixiaomeng 发表于 2018-11-30 20:40
我的编译器可以正常编译,你这个应该要在每个DualNode前面加上 struct

然而运行出来却不对.......(T_T)

rencaixiaomeng 发表于 2018-11-30 22:50:31

肥^o^帅 发表于 2018-11-30 22:40
然而运行出来却不对.......(T_T)

你不是创建26个节点,每个节点的data都初始化成'B'这个字符么
输出26个b是对的

rencaixiaomeng 发表于 2018-11-30 22:54:12

肥^o^帅 发表于 2018-11-30 22:40
然而运行出来却不对.......(T_T)

如果你想存入26个字母
q->data = 'A' + 1;这里的1改成字母 i

肥^o^帅 发表于 2018-12-1 11:37:43

rencaixiaomeng 发表于 2018-11-30 22:54
如果你想存入26个字母
q->data = 'A' + 1;这里的1改成字母 i

哦,大意了
页: [1]
查看完整版本: 看不出来哪里有问题