C和C++双向链表
双向链表是一种常用的数据结构,它可以在每个节点中同时保存指向前一个节点和后一个节点的指针。这使得在链表中的任意位置进行插入和删除操作变得更加高效。在本文中,我们将讨论如何使用C和C++编程语言实现双向链表,并提供相应的源代码供参考。
首先,我们来定义一个节点结构体,它包含一个数据成员和两个指针成员,分别指向前一个节点和后一个节点:
// C语言版本
typedef struct Node {
int data;
struct Node* prev;
struct Node* next;
} Node;
// C++版本
struct Node {
int data;
Node* prev;
Node* next;
};
接下来,我们定义一个链表结构体,它包含指向链表头部和尾部的指针:
// C语言版本
typedef struct List {
Node* head;
Node* tail;
} List;
// C++版本
struct List {
Node* head;
Node* tail;
};
现在,我们来实现一些基本的操作函数,包括创建链表、在链表头部插入节点、在链表尾部插入节点、在指定位置插入节点、删除指定位置的节点和打印链表。
// C语言版本
List* createList() {
List*