双链表反序(链表)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双链表反序(链表)相关的知识,希望对你有一定的参考价值。


 

双链表反序(链表)_双链表

 

Every storm is part of your journey. 

Yes, you will make it through this one too. You will come out stronger than you were

before...

 

双链表定义

typedef struct _dNode

int data;
struct _dNode *pre;
struct _dNode *next;
DNode;

 

关键点

1.关键在于节点中的pre, next指针,只要交换他们的值,就可以将双链表反序。

2.将头指针指向新头

 

反序代码

int ReverseDoubleList(DNode * h)

if(!h || !h->next)
printf("DLinkedNode:Reverse!\\n");
return -1;


DNode *p,*temp;
p=h->next;
while(p!=NULL)
temp=p->pre;
p->pre=p->next;
p->next=temp;

if(p->pre==NULL)
break;
else
p=p->pre;


h->next->next=NULL;
h->next=p;
return 0;

以上是关于双链表反序(链表)的主要内容,如果未能解决你的问题,请参考以下文章

算法编程 C++ python单链表反序输出

编程题之--链表反置

基本数据结构实现--单链表含测试代码

Redis双端链表

JAVA 链表操作:单连表和双链表

线性表文档之循环双链表