得分:22
函数参数 LNode *L 改为 LNode **L 才可作为in_out参数。
#include
#include
#include
#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 CreateList_L(LNode **L,int n);//声明函数
Status CreateList_L(LNode **L,int n)
{
LNode *p;
int i;
if(*L) ClearList_L(L);
for(i=n; i>0; --i)
{
p=(LNode*)malloc(sizeof(LNode));
if(!p) return OVERFLOW;
printf("第%d个结点的数据为:\n",i);
scanf(" %d",&(p->data));
p->next=*L;
(*L) = p;
}
}
//创建
void List_L(LNode *L)
{
for (; L; L=L->next)
printf("%d\n", L->data);
}
//遍历
//读取第i个元素
//插入
//删除
//求长度
int ClearList_L(LNode **L)
{
LNode *LNext;
if (*L==NULL)
{
printf("链表为空!");
return 0;
}
while(*L)
{
LNext=(*L)->next;
free(*L);
*L=LNext;
printf("已清空!");
}
*L = NULL;
return 0;
}//清空
//销毁
void mune()
{
printf("请输入您选择的操作:\nr.创建\nt.遍历\ng.读取指定元素\ni.插入\nd.删除\nl.求长度\nc.清空\nx.退出程序\n");
}
//目录
int main()
{
int n;
char opp;
LNode *L=NULL;
while(1)
{
mune();
scanf(" %c",&opp);
switch(opp)
{
case 'r':
{
printf("请输入创建结点个数:\n");
scanf(" %d",&n);
CreateList_L(&L,n);
break;
}
case 't':
List_L(L);
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");
}
}
}