数据结构-线性表-循环链表
循环单链表
#include <stdio.h>
#include <stdlib.h>
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;
}
}
int main(void){
return 0;
}
循环双链表
#include <stdio.h>
#include <stdlib.h>
typedef struct DNode {
int data;
struct DNode *prior, *next;
}DNode, *DLinklist;
//DLinklist强调是个链表
//DNode *强调是个结点
//初始化新的循环双链表
bool InitDlinkList(DLinklist &L){
L = (DNode *)malloc(sizeof(DNode)); //分配一个头结点
if(L==NULL){
return false; //内存不足,分配失败
}
L->prior = L; //头结点的prior指向头结点
L->next = L; //头结点的next指向头结点
return true;
}
void testDlinkList(){
//初始化循环双链表
DLinklist L;
InitDlinkList(L);
//...后续代码...
}
//判断循环双链表是否为空
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;
}
}
//在p结点之后插入s结点
bool InsertNextDNode(DNode *p, DNode *s){
s->next = p->next; //将结点*s插入到结点*p之后
p->next->prior = s; //循环双链表时不需要对最后一个结点特殊处理
s->prior = p;
p->next = s;
}
int main(void){
return 0;
}
THE END
0
二维码
海报
数据结构-线性表-循环链表
循环单链表
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{ //定义单链表结构类型
int data; //每个节点存放一个数据……
共有 0 条评论