数据结构与算法分析 c++11 练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素
来源:互联网 发布:房屋设计软件手机版 编辑:程序博客网 时间:2024/05/22 14:54
练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素,分别使用
a. 单链表。
b. 双链表。
singlyList.h
#pragma once#include <iostream>struct ListNode {int value;ListNode * pNext;};void addListNode(ListNode * & p, int v) {if (p==NULL) {ListNode * pTem = new ListNode;pTem->pNext = NULL;pTem->value = v;p = pTem;}elseaddListNode(p->pNext, v);}void swap(ListNode * & p) { //chang the neighboring node; if (NULL == p)return;ListNode * p1;ListNode * p2;p1 = p->pNext;p2 = p1->pNext;p1->pNext = p2->pNext;p->pNext = p2;p2->pNext = p1;}void traverse(ListNode * p) { //traverse the list and output the value while (NULL != p){std::cout << p->value << " ";p = p->pNext;}std::cout << std::endl;return;}
#pragma once#include <iostream>struct DbListNode {int value;DbListNode * pNext;DbListNode * pPre;};DbListNode * pTail;void addDoublyListNode(DbListNode * & p, int v) {if (NULL == p) {if (NULL == pTail) {DbListNode * pTem = new DbListNode;pTem->pNext = NULL;pTem->pPre = NULL;pTem->value = v;p = pTem;pTail = pTem;}else {DbListNode * pTem = new DbListNode;pTem->pNext = NULL;pTem->pPre = pTail;pTem->value = v;p = pTem;pTail = pTem;}}elseaddDoublyListNode(p->pNext, v);}void swapDoublyList(DbListNode * & p) { //chang the neighboring node; if (NULL == p)return;DbListNode * p1;DbListNode * p2;p1 = p->pNext;p2 = p1->pNext;p1->pNext = p2->pNext;p2->pNext->pPre = p1;p->pNext = p2;p2->pPre = p;p2->pNext = p1;p1->pPre = p2;}void printDbList(DbListNode * p) { //traverse the list and output the value while (NULL != p){std::cout << p->value << " ";p = p->pNext;}std::cout << std::endl;DbListNode * p1 = pTail;while (NULL != p1){std::cout << p1->value << " ";p1 = p1->pPre;}std::cout << std::endl;std::cout << std::endl;return;}
main.cpp
#include "singlyList.h"#include "doublyList.h"using namespace std;ListNode * psHead = NULL;DbListNode *pdHead = NULL;int main(){// singly Listcout << "singly List switch test: " << endl;addListNode(psHead, 1);addListNode(psHead, 2);addListNode(psHead, 3);addListNode(psHead, 4);addListNode(psHead, 5);traverse(psHead);swap(psHead->pNext);traverse(psHead);cout << endl << endl;cout << "Doubly List switch test: " << endl;pTail = NULL;addDoublyListNode(pdHead, 1);addDoublyListNode(pdHead, 2);addDoublyListNode(pdHead, 3);addDoublyListNode(pdHead, 4);addDoublyListNode(pdHead, 5);printDbList(pdHead);//swapDoublyList(pdHead);swapDoublyList(pdHead->pNext);printDbList(pdHead);return 0;}
0 0
- 数据结构与算法分析 c++11 练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素
- p62 练习3.3 通过只调整指针(而不是数据)来交换两个相邻的元素,使用:
- 通过只调整指针(而不是数据)来交换两个相邻的元素
- 练习 3.3 通过只调整指针(不是数据)来交换两个相邻的元素
- 单向链表 练习3.3 通过只调整指针来交换两个相邻的元素
- 8.通过调整链来交换两个相邻的元素
- 只调整指针来交换两个相邻的元素【单链表】
- 只调整指针来交换两个相邻的元素【双链表】
- 交换单链表中相邻的两个元素 Swap Nodes in Pairs
- 通过交换相邻数来完成排序所需要的最少交换次数
- 数据结构与算法分析练习
- Swap Nodes in Pairs(交换链表相邻的两个结点)
- 交换单链表中相邻的两个点(人搜)
- Leetcode016--链表相邻元素进行交换
- 单链表交换相邻元素
- 7-6 冒泡法排序(20 分) 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素
- 数据结构与算法(C语言版)__交换
- 那些年我们刷过的算法题(排序)---有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序
- Go1.8抓取网络数据包
- java OSCache Util
- WMS--窗口创建流程整理
- Web开端
- DIV拖动实现
- 数据结构与算法分析 c++11 练习3.2 通过只调整链(而不是数据)来交换两个相邻的元素
- mipi简介
- basename dirname 命令的用法
- java__while if1000以内能被输入元素整除的数之和
- python os模块 常用命令
- Java、Js中split方法的区别
- 单例多例
- 时间计算
- java把数据生成pdf文件