一个关于while(L)的错误问题。(需要运行调试!)
程序代码:
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define OVERFLOW 0 #define OK 1 #define ERROR 0 typedef int Status; typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode;//定义结构体 void mune(); int ClearList_L(LNode *L); Status InitList_L(LNode *L); Status CreateList_L(LNode *L,int n);//声明函数 Status InitList_L(LNode *L) { L=(LNode*)malloc(sizeof(LNode)); if(!L) return OVERFLOW; L->next=NULL; return OK; }//初始化 Status CreateList_L(LNode *L,int n) { LNode *p; int i; if(!L) return ERROR; if(L->next) ClearList_L(L); for(i=n;i>0;--i) { p=(LNode*)malloc(sizeof(LNode)); printf("第%d个结点的数据为:\n",i); scanf(" %d",&(p->data)); p->next=L->next; L->next=p; } } //创建 //遍历 //读取第i个元素 //插入 //删除 //求长度 int ClearList_L(LNode *L) { LNode *LNext; while(L==NULL) { printf("链表为空!"); return 0; } while((L->next)!=NULL) { LNext=L->next; free(L); L=LNext; printf("已清空!"); } return 0; }//清空 //销毁 void mune() { printf("请输入您选择的操作:\nr.创建\nt.遍历\ng.读取指定元素\ni.插入\nd.删除\nl.求长度\nc.清空\nx.退出程序\n"); } //目录 int main() { int n; char opp; LNode *L; if(!InitList_L(L)) printf("初始化失败!\n"); else printf("初始化成功!\n"); while(1) { mune(); scanf(" %c",&opp); switch(opp) { case 'r': { printf("请输入创建结点个数:\n"); scanf(" %d",&n); CreateList_L(L,n); break; } case 't':break; case 'g':break; case 'i':break; case 'd':break; case 'l':break; case 'c':ClearList_L(L);break; case 'x':break; default: printf("请重新输入!\n"); } } }
这是一个链表操作程序,运行没问题,第一次输入"r"
或者运行"c",一样的结果。
调试也调试不出来,我用VC++6.0和CFree都试过了,不行啊!
先谢谢各位!
感谢!