循环单链表:
头文件:“clinklist.h”
#pragma once
#include<stdio.h>
#include<malloc.h>
typedef int Elemtype;
typedef struct LNode
{
Elemtype data;
struct LNode* next;
}LinkNode;
void InitList(LinkNode *&L)
{
L = (LinkNode*)malloc(sizeof(LinkNode));
L->next = L;
}
void CreatListF(LinkNode *&L,Elemtype a[],int n)
{
LinkNode* s;
int i;
L = (LinkNode*)malloc(sizeof(LinkNode));
L->next = L;
for (i = 0; i < n; i++)
{
s = (LinkNode*)malloc(sizeof(LinkNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
s = L->next;
while (s->next!=NULL)
{
s = s->next;
}
s->next = L;
}
void CreatListR(LinkNode *&L,Elemtype a[],int n)
{
LinkNode* s,*r;
int i;
L = (LinkNode*)malloc(sizeof(LinkNode));
L->next = L;
r = L;
for (i = 0; i < n; i++)
{
s = (LinkNode*)malloc(sizeof(LinkNode));
s->data = a[i];
r->next = s;
r = s;
}
r->next = L;
}
void DestoryList(LinkNode *&L)
{
LinkNode* pre=L,*p=pre->next;
while(p!=L)
{
free(pre);
pre = p;
p = p->next;
}
free(pre);
}
bool ListEmpty(LinkNode *L)
{
return(L->next == L);
}
int ListLength(LinkNode *L)
{
LinkNode* p = L;
int n;
while (L->next != L)
{
p = p->next;
n++;
}
return n;
}
void DispList(LinkNode *L)
{
LinkNode* p = L->next;
while (p->next != L)
{
pri