单链表带头结点.docx
- 文档编号:2398219
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:15.71KB
单链表带头结点.docx
《单链表带头结点.docx》由会员分享,可在线阅读,更多相关《单链表带头结点.docx(18页珍藏版)》请在冰豆网上搜索。
单链表带头结点
1.单链表(带头结点):
1.头插
/*****************************************************
copyright(C),2014-2015,LightingStudio.Co.,Ltd.
Filename:
Author:
Jerey_JobsVersion:
0.1Date:
Description:
带表头节点的单链表(头插)
FuncionList:
*****************************************************/
#include
#include
#include
structnode/*定义链表节点*/
{
intnum;
structnode*next;
};
typedefstructnodeNode;/*简化表示链表节点*/
typedefstructnode*Link;
voidis_malloc_ok(Link*new_node)/*为新节点申请内存*/
{
if((*new_node)==NULL)
{
printf("mallocerror!
\n");
exit(-1);
}
}
voidcreate_link(Link*head)/*创建带头节点的新的链表*/
{
(*head)=(Link)malloc(sizeof(Node));
is_malloc_ok(head);
(*head)->next=NULL;
}
voidinsert_node_head(Link*head,Link*new_node)/*头插*/
{
(*new_node)->next=(*head)->next;
(*head)->next=*new_node;
}
voiddisplay_link(Link*head)/*遍历*/
{
Linktmp;
tmp=(*head)->next;
if(tmp==NULL)
{
printf("linkisempty!
\n");
return;
}
while(tmp!
=NULL)
{
printf("num=%d\n",tmp->num);
tmp=tmp->next;
}
}
voidcreate_new_node(Link*new_node,inti)/*创建新的节点*/
{
(*new_node)=(Link)malloc(sizeof(Node));
is_malloc_ok(new_node);
(*new_node)->num=i;
}
voidrelease_link(Link*head)/*释放*/
{
Linktmp;
tmp=*head;
while(*head!
=NULL)
{
(*head)=(*head)->next;
free(tmp);
tmp=(*head);
}
}
intmain()
{
Linkhead=NULL;
Linknew_node=NULL;
inti;
intnum;
create_link(&head);
for(i=0;i<10;i++)
{
create_new_node(&new_node,i);
insert_node_head(&head,&new_node);
}
display_link(&head);
release_link(&head);
return0;
}
2.尾插
/*****************************************************
copyright(C),2014-2015,LightingStudio.Co.,Ltd.
Filename:
Author:
Jerey_JobsVersion:
0.1Date:
Description:
带表头节点的单链表(尾插)
FuncionList:
*****************************************************/
#include
#include
#include
structnode/*定义链表节点*/
{
intnum;
structnode*next;
};
typedefstructnodeNode;/*简化表示链表节点*/
typedefstructnode*Link;
voidis_malloc_ok(Link*new_node)/*为新节点申请内存*/
{
if((*new_node)==NULL)
{
printf("mallocerror!
\n");
exit(-1);
}
}
voidcreate_link(Link*head)/*创建带头节点的新的链表*/
{
(*head)=(Link)malloc(sizeof(Node));
is_malloc_ok(head);
(*head)->next=NULL;
}
voidinsert_node_tail(Link*head,Link*new_node)/*尾插*/
{
Linktmp;
tmp=*head;
while(tmp->next!
=NULL)
{
tmp=tmp->next;
}
tmp->next=(*new_node);
(*new_node)->next=NULL;
}
voiddisplay_link(Link*head)/*遍历*/
{
Linktmp;
tmp=(*head)->next;
if(tmp==NULL)
{
printf("linkisempty!
\n");
return;
}
while(tmp!
=NULL)
{
printf("num=%d\n",tmp->num);
tmp=tmp->next;
}
}
voidcreate_new_node(Link*new_node,inti)/*创建新的节点*/
{
(*new_node)=(Link)malloc(sizeof(Node));
is_malloc_ok(new_node);
(*new_node)->num=i;
}
voidrelease_link(Link*head)/*释放*/
{
Linktmp;
tmp=*head;
while(*head!
=NULL)
{
(*head)=(*head)->next;
free(tmp);
tmp=(*head);
}
}
intmain()
{
Linkhead=NULL;
Linknew_node=NULL;
inti;
intnum;
create_link(&head);
for(i=0;i<10;i++)
{
create_new_node(&new_node,i);
insert_node_tail(&head,&new_node);
}
display_link(&head);
release_link(&head);
return0;
}
3.中间插
/*****************************************************
copyright(C),2014-2015,LightingStudio.Co.,Ltd.
Filename:
Author:
Jerey_JobsVersion:
0.1Date:
Description:
带表头节点的单链表(中间插)
FuncionList:
*****************************************************/
#include
#include
#include
structnode/*定义链表节点*/
{
intnum;
structnode*next;
};
typedefstructnodeNode;/*简化表示链表节点*/
typedefstructnode*Link;
voidis_malloc_ok(Link*new_node)/*为新节点申请内存*/
{
if((*new_node)==NULL)
{
printf("mallocerror!
\n");
exit(-1);
}
}
voidcreate_link(Link*head)/*创建带头节点的新的链表*/
{
(*head)=(Link)malloc(sizeof(Node));
is_malloc_ok(head);
(*head)->next=NULL;
}
voidinsert_node_mid(Link*head,Link*new_node)/*中间插*/
{
Linkp1=(*head)->next;
Linkp2=*head;
if(p1==NULL)
{
(*head)->next=*new_node;
(*new_node)->next=NULL;
return;
}
while((*new_node)->num>p1->num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1->next==NULL)
{
if((*new_node)->num>p1->num)
{
p1->next=*new_node;
(*new_node)->next=NULL;
}
else
{
p2->next=*new_node;
(*new_node)->next=p1;
}
}
else
{
p2->next=*new_node;
(*new_node)->next=p1;
}
}
voiddisplay_link(Link*head)/*遍历*/
{
Linktmp;
tmp=(*head)->next;
if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 表带 结点