单链表不带头结点Word文档格式.docx
- 文档编号:19704809
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:20
- 大小:16.12KB
单链表不带头结点Word文档格式.docx
《单链表不带头结点Word文档格式.docx》由会员分享,可在线阅读,更多相关《单链表不带头结点Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
malloc.h>
structnode/*定义链表节点*/
{
intnum;
structnode*next;
};
typedefstructnodeNode;
/*简化表示链表节点*/
typedefstructnode*Link;
voidcreate_link(Link*head)/*创建新的,空的链表*/
*head=NULL;
}
voidis_malloc_ok(Link*new_node)/*判断节点是否创建成功*/
if((*new_node==NULL))
{
printf("
mallocerror!
\n"
);
exit(-1);
}
voidcreate_new_node(Link*new_node,inti)/*创建新的节点*/
(*new_node)=(Link)malloc(sizeof(Node));
is_malloc_ok(new_node);
(*new_node)->
num=9-i;
voidinsert_node_head(Link*head,Link*new_node)/*头插*/
(*(new_node))->
next=*head;
*head=*new_node;
voiddisplay_link(Link*head)/*遍历*/
Linktmp;
tmp=*head;
while(tmp!
=NULL)
num=%d\n"
tmp->
num);
tmp=tmp->
next;
voidrelease_link(Link*head)/*释放*/
Linktmp;
while(*head!
(*head)=(*head)->
next;
free(tmp);
tmp=(*head);
intmain()
Linkhead=NULL;
Linknew_node=NULL;
inti;
create_link(&
head);
for(i=0;
i<
10;
i++)
create_new_node(&
new_node,i);
insert_node_head(&
head,&
new_node);
display_link(&
release_link(&
return0;
2.尾插
创建链表用尾插法
structnode/*定义链表节点*/
/*简化链表节点表示*/
if((*new_node==NULL))
voidcreate_new_node(Link*new_node,inti)/*创建节点*/
voidinsert_node_tail(Link*head,Link*new_node)/*尾插插入节点*/
if(tmp==NULL)/*判断链表为空,则头插*/
next=tmp;
else/*链表不为空,则尾插*/
while(tmp->
next!
tmp->
next=(*new_node);
next=NULL;
tmp=*head;
(*head)=(*head)->
insert_node_tail(&
3.中间插
创建链表用中间插法
voidis_malloc_ok(Link*new_node)/*为新节点申请内存*/
/*让新节点指向待插入节点*/
num=9-i;
voidinsert_node_mid(Link*head,Link*new_node)/*中间插入节点*/
Linkp1=NULL;
Linkp2=NULL;
p1=*head;
if(*head==NULL)/*判断链表为空,则直接插入*/
(*new_node)->
*head=*new_node;
else/*不为空,则中间插*/
while((p1->
num<
num)&
&
(p1->
=NULL))
p2=p1;
p1=p1->
if((*head)->
next==NULL)
if((*new_node)->
p1->
num)
next=*head;
else
(*head)->
next=*new_node;
if(p1==*head)
if(p1->
p2->
next=(*new_node);
next=p1;
num>
p2=p1->
next=p2;
intnum;
inti;
{
scanf("
%d"
&
num);
new_node,num);
insert_node_mid(&
4.删除链表
创建链表用尾插法(删除链表)
voiddelete_node(Link*head,intnum)/*删除链表*/
p2=*head;
if(*head==NULL)
Linkisempty!
return;
while(p1->
num!
=num&
num==num)
free(p1);
next=NULL;
nosuchnumberinlink!
*head=p1->
next=p1->
&
delete_node(&
head,num);
5.链表逆序
创建链表用尾插法(再逆序输出)
voidconvert_link(Link*head)/*逆序*/
Linkp3=NULL;
p1=p2=p3=*head;
if(*head==
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单链表不 带头 结点