以前学过C++,meow写过C。数据结构要写C,语法能编译,exe停止运行。。实在不知道错误,求解啊,谢谢,蛮简单的程序,链表的操作啊
#include<stdio.h>#include<stdlib.h>
#define LEN sizeof(struct LNode)
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
void Creat(LinkList L,int n)
{LNode *p;
printf("输入元素:");
for(int i=n;i>0;--i)
{ p=(LNode*)malloc(sizeof(LNode));
scanf("%d",&p->next);
p->next=L->next;
L->next=p;
}
}
void initlist(LinkList *L) //初始化
{
*L=(LNode*)malloc(sizeof(LNode));
(*L)->next=NULL;
}
int Getlen(LinkList L) //求长度
{ int num=0;
LNode *p;
p=L->next;
while(p!=NULL)
{num++;
p=p->next;
}
return (num);
}
LinkList Getelem(LinkList L,int i) //按序号取元素
{LNode *p;int pos=1;
p=L->next;
if(i<1 || i>Getlen(L)) exit(1);
while(pos<i)
{p=p->next;
pos++;
}
return p;
}
LNode *Locate(LinkList L,int x) //查找运算
{LNode *p;
p=L->next;
while(p!=NULL && p->data!=x)
p=p->next;
return p;
}
void Inselem(LinkList L,int i,int x) //插入
{ LNode *p,*q,*s;
int pos=1;
p=L;
if(i<1 || i>Getlen(L)+1) exit(1);
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
while(pos<=i)
{ q=p;p=p->next;
pos++;
}
s->next=q->next;
q->next=s;
}
void Delelem(LinkList L,int i) //删除
{int pos=1;
LNode *q=L;LNode *p;
if(i<1 || i>Getlen(L)) exit(1);
while(pos<i)
{q=q->next;
pos++;
}
p=p->next;
q->next=p->next;
free(p);
}
void print(LinkList L) //输出表
{
LNode *t;
while(t!=NULL)
{
printf("%4d",t->data);
t=t->next;
}
printf("\n");
}
void main()
{
int b=0,c=0,e=0,m1=0,m2=0,z1=0,v1=0,a;
LinkList L;
printf("输入元素个数:");
scanf("%d",&a);
Creat(L,a);
printf("输出该表:");
print(L);
b=Getlen(L);
printf("%s%d","线性表的长度为:",(b+1),"\n");
printf("输入所取元素的序号:");
scanf("%d",&c);
printf("%s%d","所取元素为",Getelem(L,c));
printf("输入要查找的元素:");
scanf("%d",&z1);
printf("%s%d","所取元素的下标为:",Locate(L,z1));
printf("输入要插入的位置及元素:");
scanf("%d%d",m1,m2);
Inselem(L,m1,m2);
printf("输出插入后的表");
print(L);
printf("输入要删除的元素的序号:");
scanf("%d",&v1);
Delelem(L,v1);
printf("输出删除后的表");
print(L);
}