单链表

  我去终于做出来了  不是难  是前面的东西学的不扎实导致有的东西理解的不到位

     又恶补了一下  终于做出来了   世上无难事,只怕有心人。光改错就好几就   想放弃的时候

   想一想问什么别人可以做出来 你为什么不行。。。多琢磨下  画画图  估计每个学过c语言的同学都可以做出来 

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
} lnode,*linklist;


linklist creat( void)
{ int n,k,i;
linklist l,p,r;
l=(linklist)malloc(sizeof(lnode));
if( l==NULL)
{
printf("内存分配失败");
exit(-1);
}

l->next=NULL;
r=l;


printf("请输入链表共有数字:");
scanf("%d",&n) ;
for( i=0;i<n;i++)
{
p=(linklist)malloc(sizeof(lnode));

if( p==NULL)
{
printf("内存分配失败");
exit(-1);
}
printf("链表的值:");
scanf("%d",&p->data);

r->next=p;
p->next=NULL;
r=p;
}


return l;

}

int insert(linklist l,int i,int x)
{

linklist p,s;
p=l;int j=1;
while(p!=NULL&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)
return 0;
else{
s=(linklist)malloc(sizeof(lnode));
s->data=x;
s->next=p->next;
p->next=s;

}
return 0;
}

int del(linklist l,int i,int x)
//LinkList&L 是引用传递 可以起到修改链表的效果
//LinkList L 是值传递 传的是L的一个副本 对副本操作后无法起到修改链表的效果
{
linklist p,q;
p=l;
int j=0;
while(p&&j<i){
p=p->next;
j++;
}
if(!(p||j>i))
return 0;

q=p->next;
p->next=q->next;
x=q->data;
free(q);
return 0;

}

int len(linklist l)
{
linklist p;
int j=0;
p=l->next;
while(p!=NULL)
{ j++;
p=p->next;

}
printf("链表长度为:%d",j);
return 0;
}


int clear(linklist l)
{
linklist q,p;
int j=0;
p=l->next;
while(p!=NULL)
{
q=p->next;
l->next=q;
free(p);
p=q;

}
l->next=NULL;

}


void print(linklist l)
{
linklist p,r,s;
p=l->next;
while(p!=NULL)//链表不为空
{
printf("%d ",p->data );
p=p->next;

}
printf(" ");
}
int main()
{
linklist l,p,s;
int x,n,i,choose;
l=(linklist)malloc(sizeof(lnode));
l->next=NULL;
l->data=-1;
l=creat();
print(l);
printf("请输入操作: ");
printf("输入操作1:length ");
printf("输入操作2:insert ");
printf("输入操作3: delete ");
printf("输入操作4:clear ");
while(scanf("%d",&i)){

switch(i)
{
case 1: len(l);
break;

case 2: insert(l,2,2);print(l);
break;

case 3:del(l,2,2); print(l);
break;

case 4:clear(l);print(l);
break;

default :printf("error");
}

}

return 0;
}

原文地址:https://www.cnblogs.com/mykonons/p/5861830.html