#include <stdio.h>
#include <malloc.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}lnode,*linklist;
linklist init_linklist()
{
linklist h;
h=(linklist)malloc(sizeof(lnode));
if(h)
h->next=NULL;
return h;
}
void fuzhi_linklist(linklist h,int a[])
{
linklist p;
linklist q;
int i;
p=h;
for(i = 0;i < 6;i++)
{
q=(linklist)malloc(sizeof(lnode));
q->data=a[i];
q->next=NULL;
p->next=q;
p=q;
}
}
void show_linklist(linklist h)
{
linklist p=h->next;
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
int length_linklist(linklist h)
{
linklist p=h;
int count = -1;
while(p)
{
p=p->next;
count++;
}
return count;
}
void reverse_linklist(linklist h)
{
linklist p;
linklist q;
p=h->next;
h->next=NULL;
while(p)
{
q=p;
p=p->next;
q->next=h->next;
h->next=q;
}
}
linklist locate_linklist_pos(linklist h, int i)
{
linklist p ;
int j;
p=h;
j = 0;
while(p &&j < 1)
{
p=p->next;
j++;
}
if(j!=i || !p)
{
printf("i error error\n");
return NULL;
}
return p;
}
void insert_linklist(linklist h,int i,datatype x)
{
linklist p;
linklist q;
p=locate_linklist_pos(h,i-1);
q=(linklist)malloc(sizeof(lnode));
q->data=x;
q->next=p->next;
p->next=q;
}
int delete_linklist(linklist h,int i)
{
linklist p;
linklist q;
if(h==NULL||h->next==NULL)
{
printf("error");
return 0;
}
p=locate_linklist_pos(h,i-1);
if(p==NULL||p->next==NULL)
{
printf("i error\n");
return 0;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
main()
{
int b[6]={3,4,5,5,7,10};
linklist lb=init_linklist();
fuzhi_linklist(lb,b);
show_linklist(lb);
reverse_linklist(lb);
show_linklist(lb);
insert_linklist(lb,2,9);
show_linklist(lb);
delete_linklist(lb,5);
show_linklist(lb);
return 0;
}
链表
最新推荐文章于 2020-05-26 23:58:13 发布