链表的创建及使用一直是一个小难题,今天我分享一下我的学习心得吧。
首先,要创建一个头结点。
struct node
{
int data;
struct node *next;
};
完成后分为4步:1、创建链表 2、输出链表 3、插入某一个数 4、删除某一个数
这就是一个简单链表的结构,当然,如果你想添加更多功能的话,可以自己加入,是它变得更加丰富多彩!
1、创建链表
SLIST *creat_slist(void);//创建链表
SLIST *creat_slist(void)
{
int c;
SLIST *h,*s,*r;
h=(SLIST *)malloc(sizeof(SLIST));
r=h;
scanf("%d",&c);
while(c!=-1)
{
s=(SLIST *)malloc(sizeof(SLIST));
s->data=c;
r->next=s;
r=s;
scanf("%d",&c);
}
r->next='\0';
return h;
}
2、输出链表
void printf_slist(SLIST *h);//输出链表
void printf_slist(SLIST *h)
{
SLIST *p;
p=h->next;
if(p=='\0') printf("Linklist is null!\n");
else
{
printf("head");
do
{
printf("->%d",p->data);
p=p->next;
}
while(p!='\0');
printf("end\n");
}
}
3、插入某一个数
void insert_slist(SLIST *h,int x,int y);//插入某一个数
void insert_slist(SLIST *h,int x,int y)
{
SLIST *s,*p,*q;
s=(SLIST *)malloc(sizeof(SLIST));
s->data=y;
q=h;
p=h->next;
while(p!='\0'&&p->data!=x)
{
q=p;
p=p->next;
}
s->next=p;
q->next=s;
}
4、删除某一个数
void delete_slist(SLIST *h,int x);//删除某一个数
void delete_slist(SLIST *h,int x)
{
SLIST *p,*q;
q=h;
p=h->next;
while(p!='\0'&&p->data!=x)
{
q=p;
p=p->next;
}
if(q->data==x)
{
q->next=p->next;
}
}
5、主函数
int main(void)
{
SLIST *h;
int x,y,m;
system("cls");
scanf("%d%d",&x,&y);//y插入到x的前面
scanf("%d",&m);//删除m
h=creat_slist();
printf_slist(h);
insert_slist(h,x,y);
printf_slist(h);
delete_slist(h,m);
printf_slist(h);
}
650





