习题3.3---只通过调整指针来达到相邻结点交换的过程

//单链表
void
ExchangeNear( List L, Position PosBefoP )
{
    Position PosL,PosR;
    PosL = PosBefoP->Next;
    PosR = PosL->Next;

    PosL->Next = PosR->Next;
    PosR->Next = PosL;
    PosBefoP->Next = PosR;
}
//双链表
void
ExchangeNear( Position PosBefoP, List L )
{
    Position P,PosAfteP;
    P = PosBefoP->Next;
    PosAfteP = P->Next;

    P->Next = PosAfteP->Next;
    P->front = PosAfteP;

    PosAfteP->Next = P;
    PosAfteP->front = PosBefoP;

    PosBefoP->Next = PosAfteP;
}

时间: 2024-09-29 07:58:05

习题3.3---只通过调整指针来达到相邻结点交换的过程的相关文章

二叉搜索树变成有序双向链表,要求不能创建新的结点,只调整指针的指向

二叉搜索树的结点有2个指针,分别指向左右孩子,双链表的每个结点也有2个指针,分别指向前后结点,所以在不创建新结点,只调整指针指向时可以将二叉搜索树变成双向链表:又由于二叉搜索树在中序遍历时是有序的,所以可以采用中序处理二叉搜索树调整指针指向将其变成有序双向链表.为了简化指针移动操作,我们让左孩子为前向指针,右孩子为后向指针. 二叉搜索树的最左结点即使整个树中最小的结点,所以首先找到最左结点,它就是链表的首结点,链表最后一个结点初始化为空.中序遍历时,当前结点的左孩子指向链表的最后一个结点,若最后

链表习题(8)-寻找单链表中数据域大小为k的结点,并与前一结点交换,如果前一结点存在的情况下

1 /*寻找单链表中数据域大小为k的结点,并与前一结点交换,如果前一结点存在的情况下*/ 2 /* 3 算法思想:定义两个指针,pre指向前驱结点,p指向当前结点,当p->data == k的时候,交换 4 pre->data和p->data 5 */ 6 void SwapData(LinkList& L, int k) 7 { 8 LNode *pre = L, *p = L->next; 9 int temp; 10 while (p) 11 { 12 if (p-&

以带头节点的循环链表表示队列,并且只设置一个指针指向队尾元素,实现这样的功能的想法。

用循环链来表示队列,并且只有一个指针.我的想法就是在每个节点添加一个布尔型数据,可以用布尔型数据的true和false来判断此节点是否有数据. 这样生成队列的时候和书上类似. 插入数据的时候,先保存原指针指向的点,然后将此指针向下寻找,直到找到一个节点的布尔是false,而下一个是true时,表示此节点是在队尾,将数据插入,并将次节点的布尔值修改为true.如果找不到这样的节点,说明“上溢”或者是个空的链表.抛出异常. 删除数据的时候,和插入类似,先备份原指针,然后用原指针去不断向下寻找,直到找

算法Sedgewick第四版-第1章基础-015一stack只保留last指针

1 /************************************************************************* 2 * 3 * A generic queue, implemented using a *circular* linked list. 4 * (Exercise 1.3.29) 5 * 6 * % java Ex_1_3_29 < tobe.txt 7 * to be or not to be (2 left on queue) 8 * 9

【c语言】利用指针进行两个数的交换。

#include<stdio.h>void swap(int *a,int *b){    int temp;    temp=*a;    *a=*b;    *b=temp;}void main(){    int a,b,*m,*n;    a=4;    b=5;    m=&a;    n=&b;    printf("a=%d,b=%d\n",a,b);    swap(m,n);    printf("a=%d,b=%d\n"

IT只忍者龟Photoshop简单人像的头发抠图过程

一.导入素材,加入蒙版 1.导入美女图片 2.导入背景图片 如今须要将美女抠出来放在这个背景上,怎么办?一定会有人想到用通道,抽出.(备注:在ps6以后版本号,抽出已经没有这个选项了). 3.将美女图层复制一层,将图层混合模式设为正片叠底 4.回到美女图层,加入图层蒙版 二.将美女头发背景擦掉 1.前景色设置为黑色,用钢笔工具将大的轮廓,特别身体部分抠出来,填充前景色 2.用画笔(画笔大小自定,硬度为0)擦除头发细节.擦除完城后. Ctrl+M调整亮度 3.在将没有添加蒙版的美女从新添加复制一次

20172310 2017-2018《程序设计与数据结构》(下)第三周学习总结

20172310 2017-2018<程序设计与数据结构>(下)第三周学习总结 教材学习内容总结 第五章 队列 队列:队列是一种线性集合,其元素从一端加入,从另一端删除,队列中的元素是按先进先出的方式处理的(FIFO).一个队列一端为前端(front,head), 一端为末端(rear,tail). 队列ADT所定义的操作 Java API中的队列 1.Java集合API提供了java.util.Stack类,它实现了栈集合.但它并没有提供队列类,而是提供了一个Queue接口, 由多个类(包括

CString数组内部的实现原理深入剖析

运用char 数组时会发现,char数组的元素的长度是固定了的.也即是说,一旦,数组创建完毕,就不可变了.那假如咱们想让数组元素的巨细能够改动,那么在MFC中 就运用CString数组,假如是纯C++环境中,运用string数组,都是能够到达需求的.bcn平台总代这篇文章只叙述CString数组的内部完成原 理,string的解说,将会独自解说一篇文章.趁便提一下,假如想运用数组能够动态添加元素个数,乃至想数组元素个数能够动态调整且元素巨细也能够动态 调整,那么就运用string或者CStrin

Array and Linkedlist区别与操作的时间复杂度(转载)

转载自:http://blog.csdn.net/tm_wb/article/details/6319146 数组链表堆栈和队列 数组链表堆栈和队列是最基本的数据结构,任何程序都会涉及到其中的一种或多种. 1 数组 数组是最最基本的数据结构,很多语言都内置支持数组.数组是使用一块连续的内存空间保存数据,保存的数据的个数在分配内存的时候就是确定的: 图 1.1 包含 n 个数据的数组 访问数组中第 n 个数据的时间花费是 O(1) 但是要在数组中查找一个指定的数据则是 O(N) .当向数组中插入或