循环链表就是普通的单链表,最后一个元素存的地址本来是NULL,现在改成头结点的地址,从而形成循环.
#include <stdio.h>
#include <stdlib.h>
#define MAX(X,Y) (X>Y?X:Y)
#include <math.h>
//尾部插入法创建一个包含5个元素的循环链表,从一个开始元素依次插入到头部
typedef struct S//创建一个链表元素
{
int data;//数据域
struct S* p;//地址域,指向下一个元素的地址
}S;
void creat_Linklist(S* L, int n)
{
L->p = NULL;//创建一个空链表
L->data = 0;
int i = 0;
int input = 0;
S* tmp = L;//创建一个临时指针变量,使这个指针始终指向最后一个元素
for(i = 0;i < n;i++)//循环5次,创建五个元素
{
S* a = (S*)malloc(sizeof(S));//给元素申请一个空间,并把空间地址保存下来
if(i !=5)
{
a->p = tmp->p;//把临时指针变量的地址域值赋值给该元素地址域
}
else
{
a->p = L;//把最后一个元素的址址域的值改为头结点地址
L = a;//最后把入口地址改为最后一个元素的地址,形成循环.
}
tmp->p = a;//再把该元素的地址给临时指针变量
tmp = a;//把临时指针变量指向该元素,下次循环的时候就是新插入的元素和这个元素交换地址
scanf("%d",&input);//输入你想给元素数据域data赋的值
a->data = input;//给元素赋值,创建完成!
}
for(i = 0; i
循环链表与双链表创建

本文介绍如何使用C语言实现循环链表和双链表的创建过程,包括单循环链表、双链表及双向循环链表的构建方法,并提供完整的代码示例。
最低0.47元/天 解锁文章
3536

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



