循环与双向
1、循环链表
单向链表的最后一个节点 next 指针通常指向 NULL,而循环链表的尾节点 next 指针重新指向头节点,形成闭环。
2、双向链表
双向链表的每个节点包含两个指针,一个指向前驱节点 (prev),另一个指向后继节点 (next)。
实现
了解了基本概念后,下面进行具体实现。采用哨兵位头节点的方式可以简化边界处理逻辑。
头文件
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef int ListType;
typedef struct Node {
ListType data;
struct Node* next;
struct Node* prev;
} Node;
typedef struct List {
Node* _head;
} List;
void InitList(List* p);
void DestroyList(List* p);
void PrintList(List* p);
Node* BuyNewNode(ListType x);
void HeadInsert(List* p, ListType x);
void TailInsert(List* p, ListType x);
void ;
;
Node* ;
;
;

