单
链表复制内容到剪贴板
代码:
#include
#include
#include
#include "linklist.h"
void init_Linklist(Linklist *head)
{
head=NULL;
}
void cls_Linklist(Linklist *head)
{
Linklist *cp,*np;
cp=head;
while (cp!=NULL)
{
np=cp->next;
free(cp);
cp=np;
}
head=NULL;
}
int length_Linklist(Linklist *head)
{
Linklist *p=head;
int i=0;
while (p!=NULL)
{
i++;
}
return i;
}
int emp_Linklist(Linklist *head)
{
if(head=NULL)
return TRUE;
else
return FALSE;
}
Linklist *Create_Link_tail(Linklist *head)
{
Linklist *p,*q;
int x;
q=head;
printf("请依次输入数据建立单链表,以0表示结束\n");
scanf("%d",&x);
while(x!=flag)
{
p=(Linklist *)malloc(sizeof(Linklist));
p->data=x;
q->next=p;
q=p;
scanf("%d",&x);
}
q->next=NULL;
return head;
}
int insert_after(Linklist *head,int i,int x)
{
Linklist *s,*p;
int j=0;
p=head;
while (p->next!=NULL&&j<I)
{
p=p->next;;
j++;
}
if(!p||j>i)
return FALSE;
else
{
s=(Linklist *)malloc(sizeof(Linklist));
s->data=x;
s->next=p->next;
p->next=s;
return OK;
}
}
Linklist *del_Linklist(Linklist *head,int x)
{
Linklist *q,*p;
p=head;
while (p->next!=NULL&&p->data!=x)
{
q=p;
p=p->next;
}
if(p==NULL)
return NULL;
else
{
q->next=p->next;
free(p);
}
return head;
}
Linklist *locate_linklist(Linklist *head,int x)
{
Linklist *p;
p=head->next;
while (p!=NULL&&p->data!=x)
{
p=p->next;
}
return p;
}
void dis_linklist(Linklist *head)
{
Linklist *p=head;
p=p->next;
while (p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
}
void main()
{
int i,x;
Linklist a,*b;
init_Linklist(&a);
Create_Link_tail(&a);
dis_linklist(&a);
printf("\n第i个节点后插入一个新节点,输入i:\n");
scanf("%d",&i);
printf("输入插入值:\n");
scanf("%d",&x);
insert_after(&a,i,x);
dis_linklist(&a);
printf("请输入要查找的值\n");
scanf("%d",&x);
b=locate_linklist(&a,x);
printf("节点位置是\n");
printf("%d",b);
printf("请输入要删除的值\n");
scanf("%d",&x);
del_Linklist(&a,x);
dis_linklist(&a);
}