为什么我的插入、删除、计数出错,小白需要大神帮改下

#include
#include
#define L sizeof(struct Linklist)
struct Linklist
{
int date;
struct Linklist *next;//定义了一个指向struct linklist类型数据的指针变量next,用来存放结点的地址。
};

struct Linklist *creat();
void print (struct Linklist );
void insert(struct Linklist ,int i,int x);
void delet(struct Linklist ,int i);
int GetElem(struct Linklist ,int i);
int jishu(struct Linklist *head);

struct Linklist *creat()//定义creat函数,指针类型,所以函数带回一个指针量
{

printf("请输入链表数据:");
struct Linklist *head,*p,*p1;
head=(struct Linklist*)malloc(L);
head->next=NULL;
head=p=p1=(struct Linklist*)malloc(L);
scanf("%d",&p->date);
int n=1;
while(p->date!=0)
{
    p=(struct Linklist*)malloc(L);
    scanf("%d",&p->date);
    p1->next=p;
    p1=p;
    n++;
 } 
 p->next=NULL;
 return(head);

} //建立链表

void print (struct Linklist *head)// struct Linklist *head是定义一个结构体指针变量head
{
struct Linklist *p;
printf("链表数据为:");
p=head;
while(p->date!=0)
{
printf("%d ",p->date);
p=p->next;
}
printf("\n");
return;
}//输出链表

void insert( struct Linklist *head,int i,int x)
{
int j=1;
struct Linklist *p,*r;
p=head;
while(p&&j {
p=p->next;
j++;
}
if(!p||j>i)
printf("插入出错!");
r=(struct Linklist *)malloc(L);
r->date=x;
r->next=p->next;
p->next=r;
}//在第i个位置之前插入数据x

void delet(struct Linklist *head,int i)
{
int j=1;
struct Linklist *p,*r;
p=head->next;
while(p&&j {
p=p->next;
j++;
}
if(!p||j>i-1)
printf("删除出错!");
r=p->next;
p->next=r->next;
free(r);
}//删除第i个位置上的数据

int GetElem(struct Linklist *head,int i)
{
int j=1,e;
struct Linklist *p;
p=head->next;
while(p&&j {
p=p->next;
j++;
}
if(!p||j>i)
printf("查找出错!");
e=p->next->date;
return(e);

}//查找第i个位置上的数据是多少,并赋值给e

int jishu(struct Linklist *head)
{
int n=0;
struct Linklist *p;
p=head;
while(p->next!=NULL)
{
n++;
p=p->next;
n++;
}
return(n);

}//计数,链表的个数

int main()
{
int m,n,k,h,e,o;
struct Linklist *head;

printf("请选择您要做的操作:\n1.建立链表\n2.输出链表\n3.给链表中插入数据\n4.删除链表中的数据\n5.查找链表中的数据\n6.链表中的数据计数\n\n");

head=creat();          

print (head);          

printf("请输入插入的位置和插入的数据");//调用插入函数
        scanf("%d,%d",&m,&n);
        insert(head, m, n);
        print(head);
        printf("\n");

printf("请输入要删除的数据的位置");//调用删除函数
       scanf("%d",&k);
       delet( head, k);
       print(head);
       printf("\n");
printf("请输入要查找数据的位置");//调用查找函数
        scanf("%d",&h);
        e=GetElem( head,h);
        printf("要查找的数据的位置在第%d个\n",&e);


o=jishu( head);
printf("链表中的数据有%d个\n",&o);






return 0;

}

1个回答

weixin_45778199
会哭不会飞的小鸟 可以详细点吗?小白表示不懂
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

0
jmeter怎么重置计数器?
2
如何解决pandas新建excel表中,卡号出现科学计数数字的问题?
1
vb.net 简易的计数的提示
1
python运行有错误:这是对数据进行分析生成可视化界面的程序(我是小白,请说下解决方法)
0
关于Unity的碰撞计数问题
0
用程序来每个残影的计数位长度为3个字符长度,怎么使用C语言的代码的编写思想的技术去实现呢?
3
vs2010 MFC 问一个关于浮点数小数点的处理
2
windows 性能计数器一直开着,保存的文件一直会涨到多大?
0
利用EWB设计基于74160计数器
2
为什么用于计数的r1,r2,r3 不能同时取一样的名字?
1
用verilog写出来的计数器,编译成功,但是为什么在仿真时输出有7ns延时?
2
静态链表为什么实现不了数据反转,哪里错了,具体的代码如何实现?
2
定义了一个计数器,但最后返回的是null,到底哪里不对了,求大神指点解决?
0
计数的一个问题,Count on the path
1
新唐芯片N76E885AT28的定时器/计数器初值计算。
3
求助!为什么在c语言中利用scanf将字符串写入数组中会出现缺少第一个字符的情况
1
有哪个函数是类似于WaitForSingleObject,但带有计数功能 的
2
问下大神定时器T0中断导致串口通信无法正常进行的问题。
2
python3 word="0"的编码如何变为“utf-8”
1
有人把计数循环说成是变化最多的“万能循环语句”,说明为什么。