加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

【数据结构】 双循环链表代码演示

发布时间:2020-12-15 06:30:48 所属栏目:安全 来源:网络整理
导读:#include stdio.h#include stdlib.htypedef struct Data{Data *prior; // 前驱指针Data *next; // 后继指针int elem; // 数据元素}DoubleLinked,*PDoubleLinked;void DisDoubleLinked(PDoubleLinked L);void InsertDoubleLinked(PDoubleLinked L,int index,i
#include <stdio.h>
#include <stdlib.h>

typedef struct Data
{
	Data *prior;    // 前驱指针
	Data *next;     // 后继指针
	int elem;       // 数据元素
}DoubleLinked,*PDoubleLinked;

void DisDoubleLinked(PDoubleLinked L);
void InsertDoubleLinked(PDoubleLinked L,int index,int elem);
void DeleteDoubleLinked(PDoubleLinked L,int index);
void ModifyDoubleLinked(PDoubleLinked L,int elem);

void main()
{
	PDoubleLinked L,P,Q;
	int size = 0;

	/**先初始化在使用*/
	L = (PDoubleLinked)malloc(sizeof(DoubleLinked));

	// 两种策略 
	// 一  用到的时候再申请
	// 二  先申请 一大段 不够的时候再申请
	P = L;
	L->prior = NULL;

	printf("请输入双链表的大小:");
	scanf("%d",&size);

	while (size-- != 0)
	{
		P->next = (PDoubleLinked)malloc(sizeof(DoubleLinked));
		Q = P;
		P = P->next;
		P->prior = Q;
		P->next = NULL;
		P->elem = size*2+1;
	}
	P->next = L;
	L->prior = P;    // 循环表头

	// 显示双链表
	DisDoubleLinked(L);
	// 增
	InsertDoubleLinked(L,2,23);
	printf("n");
	DisDoubleLinked(L);
	printf("n");
	// 删
	DeleteDoubleLinked(L,3);
	DisDoubleLinked(L);
	printf("n");
	// 改
	ModifyDoubleLinked(L,3,521);
	DisDoubleLinked(L);
	printf("n");
}


void DisDoubleLinked(PDoubleLinked L)
{
	PDoubleLinked P = L->next;

	while (P != L)   // P != L 的时候循环进行
	{
		printf("%dt",P->elem);
		P = P->next;
	}
}

void InsertDoubleLinked(PDoubleLinked L,int elem)
{
	PDoubleLinked P = L;
	PDoubleLinked T;
	PDoubleLinked Q = (PDoubleLinked)malloc(sizeof(DoubleLinked));
	Q->elem = elem;

	while (--index != 0)
	{
		P = P->next;
	}
	T = P->next;

	Q->prior = P;
	Q->next = T;

	P->next = Q;
	Q->next = T;
}

void DeleteDoubleLinked(PDoubleLinked L,int index)
{
	PDoubleLinked P = L;
	PDoubleLinked Q;

	while (--index != 0)
	{
		P = P->next;
	}

	Q = P->next;
	P->next = Q->next;
	Q->next->prior = P;
	free(Q);
}

void ModifyDoubleLinked(PDoubleLinked L,int elem)
{
	PDoubleLinked P = L;

	while (index-- != 0)
	{
		P = P->next;
	}

	P->elem = elem;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读