当前位置:   article > 正文

数据结构——循环双链表的转置_将两链表倒置

将两链表倒置

我们实现的是一个带头结点的循环双链表倒置,具体方法是设置两个工作指针p、q。p从第一个节点开始从头到尾进行遍历,而q从最后一个结点开始从未到头依次遍历。两个指针同时移动,每移动一次就进行一次数据元素的交换。
核心代码如下:

void d()                        //循环双链表的倒置
{
 List *p = head->next, 
  *q = head->prior;            
 //p、q不重合并且不交换
 while (q != p && p->prior != q)
 {
  //交换两节点的数据元素
  int t; t = p->data;
  p->data = q->data;
  q->data = t;
  //p指针从头到尾遍历,q指针从尾到头遍历
  p = p->next;                 
  q = q->prior;
 }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

`现在将循环双链表其他的的一些必要操作整理如下,不足之处请多指教:

#include "pch.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
//------------------------------------------------
struct List
{
 int data;
 List *prior;                     //指向前驱的指针
 List *next;                      //指向后继的指针
};
List *head, *p, *q;                  //设置指向头节点的指针以及p、q两个工作指针
//----------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/思考机器6/article/detail/62877
推荐阅读
相关标签
  

闽ICP备14008679号