双向循环链表基本操作的实现只需对双向链表进行稍加修改就可以了,单向循环链表同理。
这里仅对双向循环链表进行实现🤭!
#include <stdio.h>
#include <stdlib.h>
#define HeadNodeFlag 0
#define N 10
//双向循环链表节点单元
typedef struct DoublyLink{
struct DoublyLink *prior;//指针域
int value;//数据域
struct DoublyLink *next;//指针域
}DoublyLink;
/********************
函数 DisplayDoublyLink:依次输出双向循环链表成员信息
参数1 int HeadNode:0表示传入双向循环链表是含头节点的双向循环链表,1表示传入双向循环链表是不含头节点的双向循环链表
参数2 DoublyLink *L:双向循环链表L
********************/
void DisplayDoublyLink(int HeadNode,DoublyLink *L){
DoublyLink *p=L;//记录头指针
if(!HeadNode)L=L->next;//如果存在头节点,头指针向后移动一位指向首元节点
printf("%d<->",L->value);//打印第一个成员数据
L=L->next;//指针后移
//打印第一个成员后的成员信息
while