单循环链表变成双循环链表

本文介绍了一个程序,该程序详细阐述了如何将现有的单循环链表转换为双循环链表,涉及链表结构的调整和指针操作。
摘要由CSDN通过智能技术生成

以下程序实现把单循环链表变成双循环链表:

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<time.h>
#include<conio.h>
#include<stdlib.h>
#define ElemType char
#define ARRAYSIZE 20

typedef struct LNode
{
	ElemType data[20];
	struct LNode *next,*prior;
}LNode,*LinkList;

int InitList(LinkList &L)//生成单循环链表
{
	int i,j,t,flag,k=0;
	LinkList p=NULL,q=NULL;
	char str[ARRAYSIZE]={NULL};
	L=(LinkList)malloc(sizeof(LNode));L->next=NULL;
	strcpy(L->data,"-1");//链表头结点数据域值为 -1
	srand((unsigned)time(NULL));
	for(i=0;i<9;++i)//逆位序输入 n 个元素的值,建立带头结点的单链表 L
	{		
		k=0;t=rand()%12;
		p=(LinkList)malloc(sizeof(LNode));
		for(j=0;j<3+t;++j)//数据域赋值为随机字符串
		{
			flag=rand()%2;
			if(flag)str[k++]='A'+rand()%26;
			else str[k++]='a'+rand()%26;
		}
		str[k]='\0';//给字符数组加上结束符,使其成
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
单循环链表是一种将链表尾节点的指针域置为起始节点的地址,从而形成循环连接的链表结构。这样,从链表中的任意一个节点出发,都可以遍历到链表中的所有节点。单循环链表的结构图如下所示: 链表是一种可以从两个方向进行遍历的链表结构,每个节点除了保存下一个节点的地址外,还保存了上一个节点的地址。链表的一个特点是可以利用中间的一个节点推出下一个节点和上一个节点。链表的结构图如下所示: 对于一个循环链表来说,不论是循环链表还是循环链表,首节点和末节点都被连接在一起。这种方式在向和链表中都可以实现。要转换一个循环链表,可以选择开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。另一种方法是将循环链表的指针指向NULL来打破循环。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [数据结构——循环链表&循环链表](https://blog.csdn.net/qq_56668869/article/details/126498355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [C语言单循环链表的表示与实现实例详解](https://download.csdn.net/download/weixin_38684892/14870959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Storm-Shadow

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值