双向链表和双向循环链表

和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可。

插入操作

新节点s插入链表,s->next给p结点,s->prior给p->prior,然后,p->prior->next指向s,p->prior再指向s。顺序需要注意

s->next = p;

s->prior = p->prior;

p->prior->next = s;

p->prior = s;

删除操作

删除结点p。p->next->prior 指向 p->prior,p->prior->next 指向 p->next 。最后将p结点delete。

p->prior->next = p->next;

p->next->prior = p->prior;

delete p;

实例操作

(附截图)

注意:因为函数没有返回Node*类型,所以这里对指针进行引用,否则在退出函数的时候,并没有保存改变。如果需要删除全部链表,需要保存InitList之后的head地址,否则会遗漏一个Node结点没有删除。

代码实现:

#include

#include

#include

using namespace std;

const int OK = 1;

const int ERROR = 0;

const int LETTERNUM = 26;

typedef char ElemType;

struct Node{

ElemType data;

Node * prior;//前驱结点

Node * next;//后驱结点

};

int InitList(Node *&L){

Node *p,*q;

int i;

L = new Node; //头结点

L->next = L->prior = NULL;

p = L; //p是当前指针

for(int i=0;i

q = new Node; //q是临时指针

q->data = 'A' + i;

q->prior = p;

q->next = p->next;

p->next = q;

p = q;//指针移动

}

p->next = L->next; //尾结点指向head->next(第一个有字母的地址)

L->next->prior = p;

return OK;

}

void Change(Node *&L,int i){ //移动头指针

if (i>0){

while(i--){

L = L->next;

}

}

else if (i<0){

L = L->next ;

while(i++){

L = L->prior;

}

}

else{

L = L->next;

}

}

int main(){

Node *head = NULL;

int i,n;

InitList(head);

//Node *s_head = head; // 保存头结点之后删除

cout<

cin>>n;

Change(head,n);

for(i = 0;i

head = head->next;

cout<data<

}

cout<

return 0;

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

c语言中next和prior连在一起,C语言中双向链表和双向循环链表详解相关推荐

  1. c语言中b的作用是什么意思,C语言中是什么意思?ab怎么理解?

    C语言中&是什么意思?a&b怎么理解?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中& ...

  2. c语言中 n的意义,\n\n在c语言中是什么意思?_后端开发

    PHP如何结合MySQL进行千万级数据处理_后端开发 一张一亿的订单表,可以分成五张表,这样每张表就只有两千万数据,分担了原来一张表的压力,分表需要根据某个条件进行分,这里可以根据地区来分表,需要一个 ...

  3. C语言中sqrt怎么声明标识符,sqrt在c语言中怎么用?

    sqrt()函数在c语言中用于计算一个非负实数的平方根:其语法为"double sqrt(double)".在sqrt()函数中没有"sqrt (int)",但 ...

  4. C语言中 e3是什么意思,fib在c语言中是什么意思?

    fib在c语言中为斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列". 从第二项开始 ...

  5. C语言中return1的作用,return 1在c语言中的意思

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. return 1在c语言中的意思是返回值为一. C语言是一门面向过程.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易 ...

  6. r语言中Y=aX1-bX2 c是什么意思,R语言中的算术,您未必都知道

    数值和字符处理函数 取相反数abs(-4)---4 求平方差:sqrt(4)---2 取整函数: 1)向上取整:ceiling(3.45)---4 2)向下取整:floor(3.475)---3 3) ...

  7. c语言求字符ascii,C语言中ASCII码是什么意思? c语言怎么求字符的ascii码

    导航:网站首页 > C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 相关问题: 匿名网友: 是一个字符表,一个 ...

  8. c语言while作用范围,c语言中while是什么意思啊? , c语言while循环的表达式

    导航:网站首页 > c语言中while是什么意思啊? , c语言while循环的表达式 c语言中while是什么意思啊? , c语言while循环的表达式 匿名网友: 事例程序:void mai ...

  9. c语言中char是多少字节,c语言中char_char c = \'\\1\' 十进制是多少_c语言char

    网友求助:c语言中char_char c = \"\\1\" 十进制是多少_c语言char 问题 最佳答案 推荐答案 char一般默认是1个字节的无符号整型,范围0~255.如果是 ...

最新文章

  1. HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据过程
  2. 关于DJANGO和JAVASCRIPT的时间
  3. windows server 2008 R2系统安装教程
  4. hdu-Cube(三位树状数组)
  5. 散谈游戏保护那点事~就从_TP开始入手吧
  6. saltstack 安装nginx
  7. Oracle bigfile 大文件表空间会影响rman等备份效率
  8. python celery应用场景_Celery使用背景与功能概要
  9. 实现时间排序_面试官:手撕十大排序算法,你会几种?
  10. 企业应用超级App来啦!
  11. 数据库与表的操作之创建表(CREATE TABLE)
  12. QQ截图自动保存工具分享
  13. 三相全控tc787触发电路_典型定频空调器的电路识图方法,一看就懂
  14. MATLAB使用及介绍
  15. 5000+ 字解读 | 产品经理:如何做好元器件选型?
  16. Q3DSurface 配置使用教程
  17. python代码螺旋线怎么写_用Python绘制三轴对数螺旋线
  18. 请将第4章例4-6中的问卷调查结果用文本文件result保存, 并编写程序读该文件然后统计各评语出现的次数,再将最终统计结果追加至esultxt文件中
  19. matlab求偏转角,轮胎的回正力矩——侧偏角特性计算实例
  20. Mysql内查询时报错,错误代码: 1146

热门文章

  1. Bailian2743 字符串判等【字符串】
  2. POJ3421 X-factor Chains【分解质因子+组合数学】
  3. Vijos P1816 统计数字【序列处理】
  4. LaTeX —— 特殊符号与数学字体
  5. dedeindex php不显示_dede去掉(禁止)首页index.html默认访问 最终显示index.php
  6. 脉冲神经网络原理及应用pdf_CNN卷积神经网络原理讲解+图片识别应用(附源码)...
  7. python资料-(转)python资料汇总(建议收藏)零基础必看
  8. 零基础学python知乎-编程零基础应当如何开始学习 Python?
  9. 学python有前途吗-现在学Python还有前途吗?能做什么?
  10. python爬虫步骤-只需四个步骤,彻底上手python爬虫!