您的位置:首页 > 编程语言 > C语言/C++

链表插入的三种方式

2017-08-30 13:02 113 查看
链表的插入:

一、头插

1、判断空链 :

a:新节点指向NULL

b: 头指向新节点

2、非空链

a: 新节点指向头(第一个节点)

b: 头指向new

综上: 不需判断直接在头操作

代码:

void insert_head(Node * head , Node new)

{

new = * head;

* head = new;

}

二、中间插

1、判断空链表

2、非空

遍历找位置

找到 未找到

是头 不是头

是头:

new -> next = * head;

* head = new;

不是头:

new -> next = pre -> next;

pre -> next = new;

未找到:(补在链尾,此时cur为链尾指向的NULL)

pre -> next = new

new -> next = NULL

代码:

void insert_mid(Node * head , Node new)

{

Node * cur = NULL;

Node * pre = NULL;

if(* head == NULL)

{

printf(“it is empty\n”);

return;

}

else

{

cur = * head;

放前面

while(cur != NULL && cur -> data != new -> data)

{

pre = cur;

cur = cur -> next;

}

if(cur == NULL)

{

pre -> next = new;

new -> next = NULL;

}

else

{

if(* head == cur)

{

new -> next = * head;

* head = new;

}

else

{

new -> next = pre -> next;

pre -> next = new;

}

}

}

三、尾插

1、判断空链

a、插入第一个节点

2、非空链

a、找到链尾

b、将新节点插入链尾

代码:

void insert_tail(Node * head , Node new)

{

Node * cur = NULL;

if(* head == NULL)
{
printf(“it is empty\n”);
return;


}

else

{

cur = * head;

while(cur != NULL )

{

cur = cur -> next;

}

cur -> next = new;

new -> next = NULL;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 c语言