双链表的定义、初始化、插入、删除,C++代码实现的算法
来源:互联网 发布:天海翼 隐退知乎 编辑:程序博客网 时间:2024/05/16 07:46
#include <iostream>
using namespace std;
/*双向链表类型定义*/
typedef struct duNode
{
char data;
struct duNode *prior;
struct duNode *next;
}duNode;
typedef duNode *duLinklist;//指针类型,故访问它的成员用“->”。
/*初始化双向链表*/
void initLinklist_Du(duLinklist &L)//此处叫做引用调用,即实参和形参共用一个地址。
{
L=new duNode;
L->next=L;
L->prior=L;
}
/*取某个结点的位置*/
duNode *getElemP_D(duLinklist L,int i)
{
duNode *p;
int count;
p=L->next;
count=1;
while(p!=L&&count<i-1)
{
p=p->next;
count++;
}
if(p==L||count>i-1)
return NULL;
else
return p->next;
}
/*求双向链表的长度*/
int lengthLinklist_Du(duLinklist &L)
{
duNode *p;
int count;
p=L->next;
count=0;
while(p!=L)
{
p=p->next;
count++;
}
return count;
}
/*插入*/
void insertList_Du(duLinklist &L,int i,char x)
{
duNode *p;
duNode *s;
p=getElemP_D(L,i);
if(p==NULL)
cout<<"Poision Error!";
s=new duNode;
s->data=x;
s->prior=p->prior;
s->next=p;
p->prior->next=s;
p->prior=s;
}
/*删除*/
void deleteList_Du(duLinklist &L,int i)
{
duNode *p;
p=getElemP_D(L,i);
if(p==NULL)
cout<<"Poision Error!";
p->next->prior=p->prior;
p->prior->next=p->next;
delete p;
}
/*创建一个双向链表*/
void creatLinklist_Du(duLinklist &L,int n)
{
duNode *p;
duNode *s;
initLinklist_Du(L);
p=L;
int i;
for(i=0;i<n;i++)
{
s=new duNode;//这里忘记给S分配空间了,所以出错了。
cin>>s->data;
s->next=L;
s->prior=p;
p->next=s;
L->prior=s;
p=s;
}
}
/*输出双向链表中的元素*/
void outputLinklist_Du(duLinklist &L)
{
duNode *p;
p=L->next;
int i;
for(i=0;i<lengthLinklist_Du(L);i++)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void main()
{
duLinklist L;
creatLinklist_Du(L,3);
//outputLinklist_Du(L);
}
出错了,要先自己仔细看看,自己找一下毛病,因为没有人比自己更熟悉自己的代码了!实在看不出哪错了,再去向别人请教!嘿嘿,努力啊!
- 双链表的定义、初始化、插入、删除,C++代码实现的算法
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- 顺序表的定义、初始化、及插入、删除、查询操作,将算法转化成具体的代码
- 线性表的初始化,头部和尾部插入,删除C/C++代码实现
- C语言实现顺序表的初始化,插入,删除,查找
- 二叉排序树的构造,插入,删除,完整c代码实现
- 经典算法:红黑树的C语言实现 ( 插入 、删除 )
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除。
- C语言实现链表的创建,初始化,插入,删除,查找
- c语言实现线性表的建立,初始化,插入,删除,查找,遍历以及时间复杂度分析
- 链表的初始化、遍历、删除、插入、判断是否为空、求长度 C语言实现
- 数组实现的单链表的初始化 插入 删除
- 单链表的初始化、插入、删除——C语言
- 实现链表的初始化,按值查找,插入,删除
- c 代码定义的位置与初始化关系
- 使用 JSON 进行数据传输
- 第一篇
- Qt开发环境的搭建&加入Git做版本管理 :in Windows
- 自然数逆序输出
- My Top 5 Strengths
- 双链表的定义、初始化、插入、删除,C++代码实现的算法
- debian下的qemu用tap上网
- LINUX文件和文件夹的命名规则
- CentOS 5.5上安装Apache+Php+Mysql+phpMyAdmin+Zend Optimizer
- Week 1 - Mon.
- linux中断的响应过程
- 排序算法
- px与em的区别
- 生活随笔:水淹三亚,被困...