#include<stdio.h>
#include<stdlib.h>
//定义双链表
typedef struct DNode {
int data;
struct DNode* piror, * next;
}DNode, * DLinklist;
//初始化双链表
bool InitDLinklist(DLinklist &L) {
L = (DNode*)malloc(sizeof(DNode));
if (L == NULL) {
return false;
}
L->next = NULL;
L->piror = NULL;
return true;
}
//双链表的插入
//在p结点之后插入s结点
bool InsertNextDNode(DNode* p, DNode* s) {
if (p == NULL || s == NULL) {
return false;
}
s->next = p->next;
if (p->next != NULL) {
//若插入到最后一个结点,则跳出;
p->next->piror = s;
}
s->piror = p;
p->next = s;
return true;
}
//双链表的删除
//删除p结点的后继节点
bool DeleteNextDNode(DNode* p) {
if (p == NULL) {
return false;
}
DNode* q = p->next;
if (q == NULL) {
return false;
}
q->next = p->next;
if (q->next != NULL) {
//q结点不是最后一个结点
q->next->piror = p;
}
free(p);
return true;
}
//摧毁双链表
void DestoryList(DLinklist& L) {
while (L->next != NULL) {
DeleteNextDNode(L);
}
free(L);
L = NULL;
}
int main() {
DLinklist L;
InitDLinklist(L);
}
双链表的定义、插入、删除、销毁
最新推荐文章于 2024-05-23 17:21:42 发布