deleteNode(&head,2);// 删除包含数据2的节点printList(head);return0; } 输出结果 1->3->NULL 二、双向链表 1. 基本概念 双向链表(Doubly Linked List)是一种链表结构,其中每个节点包含三个部分:数据域、前驱指针域和后继指针域。前驱指针指向前一个节点,后继指针指向后一个节点。双向链表允许双向遍历。
int Tail_Add_Node(listlink head);//尾部插入 listlink Display(listlink head,int mode);//遍历节点 int Head_Add_Node(listlink head);//头部插入 int ADD_Anywhere(listlink head);//任意节点插入(调用了Display遍历至输入数据相等处) int Dele_Anywhere(listlink head);//删除任意节点 int ADD_Anywhere...
双向循环链表的创建 创建双向循环链表,只需在创建完成双向链表的基础上,将其首尾节点进行双向连接即可。C 语言实现代码如下://创建双向循环链表Line* initLine(Line* head) { int i; Line* list = NULL; head = (Line*)malloc(sizeof(Line));//创建链表第一个结点(首元结点) head->prior...
1typedefstructp_list_node p_list; ###双向链表的初始化函数: 1voidrt_list_init(p_list *l)2{3l->p_next = l->p_prev =l;4} 双向链表的初始化,就是让链表节点的成员指针指向本节点自己。 ###双向链表中,向指定节点后面插入节点方法: 1voidrt_list_insert_after(p_list *l,p_list *n)2{3l...
一、list简介 这里用双向链表实现,包含插入头、插入尾、删除头、删除尾等操作。 注意:考虑性能,这边所有操作均不是线程安全的,如多线程使用请合理构建或自行加锁。 二、list 包含方法 2.1. push_front 功能 插入数据到 list 头部 参数list:list指针,data:插入数据指针,len:插入数据 ...
一、双向链表介绍 双向链表(Doubly Linked List)是一种常见的数据结构,在单链表的基础上增加了向前遍历的功能。与单向链表不同,双向链表的每个节点除了包含指向下一个节点的指针外,还包含指向前一个节点的指针。 作用和原理: (1)插入和删除操作:由于双向链表中每个节点都有指向前一个节点的指针,所以在双向链表中进...
}LinkList; 2.创建链表 LinkList *createList() { LinkList*list =malloc(sizeof(LinkList)); list-> head =NULL; lsit->tail =NULL;returnlist; } 3.插入 3.1头插法 voidaddNodeBeHead(LinkList *list,intnum) { Node*p =malloc(sizeof(Node)); ...
1,双向链表相当于两个单向循环链表。 2,双向链表的结点定义。 3,单循环链表的操作都适用于双循环链表。 4,双循环链表的操作集合仍在头文件defs.h中。 5,InitList操作。双循环链表初始化操作示意图 6,ClearList操作. 7,DestroyList操作 8,ListEmpty操作 ...
ListNode* phead = ListCreate(0); phead->next = phead; phead->prev = phead; return phead; } 双链表的打印: ●因为要让终端出现下面的样子,我就用到了打印的函数。 ●首先,还是老套路,我先断言了一下,防止传的参数有问题。 ●因为这里的phead是一个哨兵位,存放着无效的数据,所以,我就定义了一...