赞
踩
我们实现的是一个带头结点的循环双链表倒置,具体方法是设置两个工作指针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; } }
`现在将循环双链表其他的的一些必要操作整理如下,不足之处请多指教:
#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两个工作指针
//----------------
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。