双向循环链表

本文介绍了一种双向循环链表的数据结构实现,并提供了创建链表、显示链表内容及在指定位置插入节点的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,今天更新的是“ 双向循环链表 ”

首先,必须感谢  mr.chen 没有他,我还找不到这段程序错在那里

好吧,现在大家有兴趣就看看把!(代码可能有错,请见谅)

/////////////////////////////    haed.h   ///////////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;

struct DLNode 
{
char data;
DLNode *prior, *next;
};
typedef DLNode* DLinkList;

bool Create( DLinkList &D , int n )
{
int i=0;
DLinkList p, newNode;
D=(DLinkList) malloc ( sizeof(DLNode) );
if( !D )
{
return false;
}
D->next=NULL;
D->prior=NULL;

p=D;
for( i=0; i<n; i++ )
{
newNode=( DLinkList ) malloc ( sizeof(DLNode) );
if( !newNode )
{
return false;
}
cout<<"请输入新结点的信息:";
cin>>newNode->data;
p->next=newNode;
newNode->prior=p;
newNode->next=NULL;
p=newNode; //p从头结点指向下一个结点,以便下面的工作
}
D->prior=newNode;
p->next=D; //这里是做了一个循环,就是说这个是“双向循环链表”
return true;
}

void ShowDLinkList( DLinkList D )
{
DLinkList p;
p=D->next;
cout<<"所有结点:";
while( p!=D )
{
cout<<p->data<<"   ";
p=p->next;
}
cout<<endl;
}

///在第i个位置插入
void Insert( DLinkList &D, int i )
{
int j=1; 
DLinkList p, newNode;
p=D->next; //让p指向第一个结点
while ( p!=D && j<i ) //找到第i个节点
{
p=p->next;
j++;
}
newNode=(DLinkList) malloc ( sizeof(DLNode) );
cout<<"输入该插入节点的信息:";
cin>>newNode->data;
newNode->prior=p->prior; //把新的结点进行连接
p->prior->next=newNode;
newNode->next=p;
p->prior=newNode;
}

///////////////////////////////     main.cpp     ///////////////////////////////////////////////////////////////
#include "head.h"

bool Create( DLinkList &D , int n );
void ShowDLinkList( DLinkList D );
void Insert( DLinkList &D, int i );

void main()
{
DLinkList D;
Create(D,3);
ShowDLinkList(D);
Insert(D,4);
ShowDLinkList(D);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值