标签:ola white word alt string 技术 1.3 malloc flow
双链表结构双链表算法之插入节点(尾部插入)双链表算法之插入节点(头部插入)
??双链表并不是有两个链表,而是有两个遍历方向的链表,因此我们说的双链表其实是双向链表的简称。
1/*
2 *双链表节点
3 */
4struct node
5{
6 int data;
7 struct node *pPrev;
8 struct node *pNext;
9}
10struct node *create_node(int data)
11{
12 struct node *p = (struct node *)malloc(sizeof(struct node));
13 if(NULL == p)
14 {
15 printf("malloc error.\n");
16 return NULL;
17 }
18 p -> data = data;
19 p -pPrev = NULL;
20 p ->pNext = NULL;
21 return p;
22}
思路分析
1/*
2 *pH :头指针
3 *new : 新节点指针
4 */
5void insert_tail(struct node *pH,struct node *new)
6{
7 //第一步:找到链表尾节点
8 struct node *p = pH; //头节点指针
9 while(NULL != p -> pNext)
10 {
11 p = p -> pNext; //移动
12 }
13 //第二步:将新节点插入到原来的尾节点后面
14 p -> pNext = new;
15 new -> pPrev = p;
16}
思路分析
1/*
2 * pH : 指向头节点
3 * new : 新节点
4 */
5void insert_head(struct node *pH,struct node *new)
6{
7 new -> pNext = pH ->pNext ; //(1)新节点的pNext指向原来节点的第一个有效节点
8 if(NULL != pH -> pNext) //当链表只有一个头节点不处理
9 pH -> pNext -> pPrev = new; //(2)节点1的pPrev指针指向新节点的地址
10 pH -> pNext = new; //(3)头节点的pNext指向新节点的地址
11 new -> pPrev = pH; //(4)新节点的pPrev指向头节点
12}
标签:ola white word alt string 技术 1.3 malloc flow
原文地址:https://www.cnblogs.com/ywx123/p/10252264.html