数据结构-循环链表&循环双链表 2021/8/9 0:28
循环链表
#include<iostream>
using namespace std;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LNode,*LinkList;
/*
* 初始化一个循环链表
*/
bool InitList(LinkList& L)
{
L = (LNode*)malloc(sizeof(LNode));
if (L == NULL)
return false;
L->next = L;
return true;
}
/*
* 循环链表判空
*/
bool empty(LinkList L)
{
if (L->next == L)
return true;
return false;
}
//在解决实际问题的时候的操作通常发生在表头和表尾,此时可以考虑将L指向表尾增加效率
1.初始化:初始化的时候将L的next指向自己
2.判空:判断L的next是否指向自己
循环双链表
#include<iostream>
using namespace std;
typedef int ElemType;
typedef struct DNode{
ElemType data;
struct DNode* prior,*next;
}DNode,*DLinkList;
/*
* 初始化循环双链表
*/
bool InitDLinkList(DLinkList& L)
{
L = (DNode*)malloc(sizeof(DNode));
if (L == NULL)
return false;
L->next = L;
L->prior = L;
return true;
}
/*
* 循环双链表判空
*/
bool empty(DLinkList L)
{
if (L->next == L)
return true;
else
return false;
}
1.初始化:初始化的时候将头结点L的prior和next指针都指向自己
2.判空:头结点L的next指针指向自己即为空
考研加油!!!!!!!