#include <iostream>
#define MaxSize 10
//定义双链表
typedef struct DNode {
int data;
struct DNode* prior, * next;
}DNode, * DLinkList;
//初始化双链表
bool InitDLinkList(DLinkList& L) {
L = (DNode*)malloc(sizeof(DNode));
if (L == NULL)
return false;//内存不足,分配失败
L->prior == NULL;//头结点的prior永远指向NULL
L->next == 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结点有后继结点
p->next->prior = s;
s->prior = p;
p->next = s;
return true;
}
//删除p结点的后继结点
bool DeleteNextDNode(DNode* p)
{
if (p == NULL)
return false;
DNode* q = p->next;//q指向p的后继结点
if (q == NULL)
return false;
p->next = q->next;
if (q->next != NULL)//q结点不是最后一个结点
q->next->prior = p;
free(q);//释放结点空间
return true;
}
//循环释放各个数据结点
void DestoryDLinkList(DLinkList& L) {
while (L->next != NULL)
DeleteNextDNode(L);
free(L);//释放头结点
L = NULL;//头指针指向NULL
}
//定义静态链表
struct Node {
int data;//存储数据元素
int next;//下一个元素的数组下标
};//或者后跟SLinkList[MaxSize]
void testSLinkList() {
struct Node a[MaxSize];//数组a作为静态链表
//...后续代码
}
双链表和静态链表的建立和相关操作
于 2023-06-19 21:38:04 首次发布