/**
* 实现循环单链表各种基本运算的算法
*
*/
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;//数据域
struct LNode *next;//指针域
}LinkNode;// 声明循环单链表结点类型
/*---------------------头插法建立循环单链表------------------------*/
static void create_list_front(LinkNode *&L, ElemType a[], int n)
{
int i;
LinkNode *s;
// 创建头结点
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
for(i = 0; i < n; i++)
{
// 创建新结点
s = (LinkNode *)malloc(sizeof(LinkNode)); // 分配内存
s->data = a[i];
// 将结点s插入到原开始结点之前,头结点之后
s->next = L->next;
L->next = s;
}
s = L->next;
while(s->next != NULL)//查找尾结点,由s指向它
s = s->next;
//尾结点next域指向头结点
s->next = L;
}
/*---------------------尾插法建立循环单链表------------------------*/
static void create_list_rear(LinkNode *&L, ElemType a[], int n)
{
int i;
LinkNode *s, *r;
// 创建头结点
L = (LinkNode *)malloc(sizeof(LinkNode));// 分配内存
L->next = NULL;
// r始终指向终端结点,开始时指向头结点
r = L;
for(i = 0; i < n; i++)
{
// 创建新结点
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
// 将结点s插入到结点r之后
r->next = s;
r = s;
}
// 尾结点next域指向头结点
r->next = L;
}
/*---------------------初始化线性表------------------------*/
static void init_list(LinkNode *&L)//指针的引用
{
L = (Lin

最低0.47元/天 解锁文章
1806

被折叠的 条评论
为什么被折叠?



