双链表例题 ﹏ヽ暗。殇╰゛Y 2022-03-18 05:11 242阅读 0赞 1.在带头结点的双链表中的第一个值为X的节点之前插入元素值为y的节点(假设双链表中不存在两个至于相同的节点)。算法:先从第一个有数据的节点开始遍历双链表,找到元素为x的节点之后在该节点之前进行插入操作;如果没有这个节点则向主调函数返回没有找到节点。 //在值域为x的节点之前插入值域为y的节点 void special_insert(Dlinklist **head, int x, int y) { linklist L = (*head) -> next, p; while(L && L -> data != x) //遍历链表找对应的节点 L = L -> next; if(!L) //如果没有找到对应节点 puts("没有找打对应节点"); else { p = (linklist)malloc(sizeof(Dlinklist)); //创建新节点 p -> data = y; //新结点数据域赋值 L -> prior -> next = p; //值域x的节点之前的节点的后继指针指向新节点 p -> prior = L -> prior; L -> prior = p; p -> next = L; puts("插入成功,插入后的链表"); } } 2.在双链表中设计算法查找第一个元素为x的节点,将其与后继节点进行交换。 算法:遍历链表寻找元素为x的节点;如果没找到则返回没有找到该节点,如果找到了直接进行指针操作。 void swap(linklist L, int x) //p是当前节点,q是其后继节点 { linklist p = L -> next, q; while(p && p -> data != x) p = p -> next; if(!p) //如果没有找到该节点 puts("没有该节点,请重试"); else { q = p -> next; //指向对应的后继节点 if(q) //如果没有后继节点 { p -> prior -> next = q; q -> prior = p -> prior; p -> next = q -> next; if(!q -> next) //如果后继节点的后继节点不存在 q -> next -> prior = p; q -> next = p; p -> prior = q; printf("交换数据域为%d的节点与其后继节点之后的链表为\n", x); print(L); } else puts("无法进行交换"); } } 3.将双链表中的所有节点逆置。思想:先用一个临时节点进行遍历,然后类似于头插法,将每一个节点插入到表头。 void reverse(linklist *head) { linklist p = (*head) -> next, q; //逆置之后第一个有数据的节点将会变成最后一个节点,因此要置空 (*head) -> next = NULL; while(p) { q = p -> next; //用q保存p的后继节点 p -> next = (*head) -> next; if((*head) -> next) (*head) -> next -> prior = p; (*head) -> next = p; p -> prior = (*head); p = q; //继续处理剩下的节点 } puts("逆置之后的链表为"); }
相关 链表(二) 双链表操作详解 文章目录 四、双向带头循环链表的实现 List.h List.c 创建返回链表的头结点 双向链表 淩亂°似流年/ 2024年03月23日 17:43/ 0 赞/ 108 阅读
相关 双链表 1、建立双链表 /头插法/ void CreateDLink(DLinkNode& L, ElemType a[], int n) { DL 矫情吗;*/ 2023年08月17日 15:15/ 0 赞/ 170 阅读
相关 双链表算法 双链表最大的优势就是可以双向遍历 package main import "fmt" type Node struct { た 入场券/ 2023年07月12日 14:42/ 0 赞/ 39 阅读
相关 双链表改造 要求:设双链表表示的线性表L=(a1,a2…an),试写一段时间复杂度为O(n)的算法,将L改造为L=(a1,a3,…an,…a4,a2)。 //第7题 分手后的思念是犯贱/ 2022年12月31日 01:12/ 0 赞/ 195 阅读
相关 双链表实例 我们实现一个功能,26个字母,我们输入一个正数就从前面数到这个正数的位置按顺序开始输出,一共输出26个字母,比如输入3,那么输出: D E F G H I J K L M N 分手后的思念是犯贱/ 2022年08月08日 06:11/ 0 赞/ 246 阅读
相关 双端链表 双端链表与传统的链表很相似,在基本链表的基础上新增一个特性:对最后一个结点的引用。如下图所示: ![这里写图片描述][20160904132653300] 与之前说到 ╰半橙微兮°/ 2022年07月18日 01:25/ 0 赞/ 255 阅读
相关 双链表 双向链表 双向链表中,每个结点都有两个指针域,一个指向其后继结点,另一个指针指向其前驱结点,如图1.1(a)所示,因此,可以从某个结点开始朝两个方向遍历整个链表。 客官°小女子只卖身不卖艺/ 2022年07月16日 04:59/ 0 赞/ 315 阅读
相关 双链表实现 以前写的不带头的单链表实现,当时也啥也没学,好多东西不知道,加上一心想压缩代码,减少情况,所以写得不太好。 请教了老师,首先是命名问题和代码紧凑性等的改进。还有可读性方面的改 柔情只为你懂/ 2022年05月10日 20:50/ 0 赞/ 300 阅读
相关 双链表例题 1.在带头结点的双链表中的第一个值为X的节点之前插入元素值为y的节点(假设双链表中不存在两个至于相同的节点)。算法:先从第一个有数据的节点开始遍历双链表,找到元素为x的节点之后 ﹏ヽ暗。殇╰゛Y/ 2022年03月18日 05:11/ 0 赞/ 243 阅读
相关 Java双链表 一、概述 ![1007094-20190729154426250-1175775918.png][] 二、英雄类 1 class HeroN 小灰灰/ 2021年11月16日 09:30/ 0 赞/ 417 阅读
还没有评论,来说两句吧...