/*循环链表:
1、循环单链表
2、循环双链表
*/
#include <bits/stdc++.h>
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
//初始化一个循环单链表
bool InitList(LinkList &L){
L=(LNode *)malloc(sizeof(LNode));//分配下一个节点
if(L==NULL)//内存不足,分配失败
return false;
L->next=L;//头结点next指向头结点
return true;
}
//判断循环单链表是否为空
bool Empty(LinkList L){
if(L->next==L)
return true;
else
return false;
}
//判断结点p是否为循环单链表的表尾结点
bool isTail(LinkList L,LNode *p){
if(p->next==L)
return true;
else
return false;
}
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=L;//头结点的prior指向头结点
L->next=L;//头结点的next指向头结点
return true;
}
//判断循环双链表是否为空(带头结点)
bool Empty(DLinkList L)
{
if(L->next==L)
return true;
else
return false;
}
//判断结点p是否为循环双链表的表尾结点
bool isTail(DLinkList L,DNode *p){
if(p->next==L)
return true;
else
return false;
}
int main()
{
LinkList L;
return 0;
}
数据结构-循环链表
最新推荐文章于 2024-06-21 00:00:00 发布