#include<stdio.h>
#include<stdlib.h>
#define ElemType char
typedef struct Node {
ElemType data;
struct Node* next;
}LNode, * LinkList;//循环链表结构体
void InitList(LinkList& L)
{//循环链表初始化
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
}
void CreateFromTail(LinkList& L)
{//尾插法建立循环链表
LNode* s;
int flag = 1;
char c;
LinkList r;
r = L;
printf("尾插法建立循环链表,请依次输入元素值,以'#'结尾\n");
while (flag)
{
c = getchar();
if (c != '#')
{
s = (LNode*)malloc(sizeof(LNode));
s->data = c;
r->next = s;
r = s;
}
else
{
flag = 0;
r->next = L;
}
}
}
void CreateFromHead(LinkList& L)
{//头插法建立循环链表
int flag = 1;
char c;
LNode* s, * r;
printf("头插法建立单链表,请依次输入单链表中的值,以#结尾\n");
while (flag)
{
c = getchar();
if (c != '#')
{
s = (LinkList)malloc(sizeof(LNode));
s->data = c;
s->next = L->next;
L->next = s;
}
else
{
flag = 0;
}
}
r = L;
while (r->next != NULL)
{
r = r->next;
}
r->next = L;
}
void print(LinkList L)
{//输出循环链表
LNode* p;
p = L->next;
printf("现在的链表是:");
while (p != L)
{
printf("%c ", p->data);
p = p->next;
}
printf("\nrear的下一个元素是%c\n", p->next->data);
}
int main()
{
LinkList LA, LB;
InitList(LA);
InitList(LB);
CreateFromHead(LB);
getchar();
print(LB);
CreateFromTail(LA);
print(LA);
return 0;
}
数据结构-循环链表(头插法,尾插法创建,打印)
最新推荐文章于 2023-03-24 09:00:00 发布