文档库 最新最全的文档下载
当前位置:文档库 › 线性表链式存储结构(单链表)

线性表链式存储结构(单链表)

1.初始化一个带头结点的单链表
linklist *InitList()
{linklist *L;
L=(linklist *)malloc(sizeof(linklist));
L->next=NULL;
return L;
}
2.建立单链表
(1)头部插入结点:
linklist *createlist()
{linklist *L=NULL,*s;
int x;
L=(linklist *)malloc(sizeof(linklist));
L->next=NULL;
scanf("%d",&x);
while(x!=0)
{s=(linklist *)malloc(sizeof(linklist));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return(L);
}
(2)尾部插入结点:
//不带头结点的单链表
linklist *createlist()
{linklist *L=NULL;
linklist *s,*r=NULL;
int x;
scanf("%d",&x);
while(x!=0)
{s=(linklist *)malloc(sizeof(linklist));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
return(L);
}
//带头结点的单链表
linklist*createlist2()
{linklist *L;
linklist *s,*r;
int x;
L=(linklist *)malloc(sizeof(linklist));
L->next=NULL;
r=L;
scanf("%d",&x);
while(x!=0)
{s=(linklist)malloc(sizeof(linklist));
s->data=x;
s->next=NULL;
r->next=s;
r=s;
scanf("%d",&x);
}
return(L);
}
3.求表长
(1)不带头结点:
int LenList(linklist *L)
{linklist *p=L;
int j=0;
while(p->next!=NULL)
{j++;
p=p->next;
}
return(j);
}
(2)带头结点:
int Lenlist(linklist *L)
{linklist *p=L->next;
int j=0;
while(p!=NULL)
{j++;p=p->next;}
return(j);
}
4.查找:
(1)按序号查找:
linklist *GetItem(linklist *L,int i)
{linlist *p=L;
int j=0;
while(p->next!=NULL&&j{j++;p=p->next;}
if(j==i)return(p);
else return NULL;
}
(2)按值查找:
linklist *LocateLinklist(linklist *L)
{linklist *p=L->next;
while(p!=NULL&&p->data!=x)
p=p->next;
return(p);
}
5.将数据元素插入到第i个位置
(1)前插:
int InsItem(linklist *l,elemtype item,int i)
{linklist *p,*s;
p=GetItem(L,i-1);
if(p==NULL)
{printf("参数i错");return0;}
else
{s=(linklist *)malloc(sizeof(linklist));
s-d>ata=item;
s->next=p->next;
p->next=s;
return 1;}
}
6.删除第i个结点
int DelItem(linklist *L,int i)
{linklist *p,*s;
p=GetItem(L,i-1);
if(p==NULL)
{printf("第i-1个结点不存在");return-1;}
if(p->next==NULL)
{printf("第i个结点不存在");return 0;}
s=p->next;
p->next=s->next;
free(s);
return 1;
}

相关文档
相关文档 最新文档