#include<stdio.h>
#include<stdlib.h>
typedef char Elemtype;
int length = 8;
char s[8] = {'A','B','C','D','E','F','G','H'};//测试数据
typedef struct DNode {
Elemtype data;
struct DNode* next;
struct DNode* prior;
}DNode,*DLink;
void Creatsingl(DLink &DL){//先创建单向循环链表,不带头结点
DLink L;//用来尾插法插入结点的指针
for (int i = 0; i < length; i++) {
DLink P = (DLink)malloc(sizeof(DNode));//创建新节点
P->data = s[i];
P->next = NULL;
if (i == 0) {//先将头指针指向第一个结点
L = P;
DL = P;
}
else {//尾插法加入
L->next = P;
L = L->next;
}
}
L->next = DL;//头尾连接起来
}
void Creatdouble(DLink& DL) {//改造单向循环链表为双向循环链表
DLink P = DL;
P->next->prior = P;//先将第二结点的前驱指针指向第一个结点
P = P->next;
while (P != DL) {
P->next->prior = P;
P = P->next;
}
}
int main() {
DLink DL;
Creatsingl(DL);//创建单向循环链表
Creatdouble(DL);//改造单向循环链表为双向循环链表
}
单向循环链表改成双向循环链表
最新推荐文章于 2024-03-25 23:29:04 发布