双链表 矫情吗;* 2023-08-17 15:15 149阅读 0赞 1、建立双链表 /*头插法*/ void CreateDLink(DLinkNode*& L, ElemType a[], int n) { DLinkNode* s; L = (DLinkNode*)malloc(sizeof(DLinkNode)); L->prior = L->next = NULL; for (int i = 0; i < n; i++) { s = (DLinkNode*)malloc(sizeof(DLinkNode)); s->data = a[i]; s->next = L->next; if (L->next != NULL) { L->next->prior = s; } L->next = s; s->prior = L; } } /*尾插法*/ void CreateDLink1(DLinkNode*& L, int a[], int n) { DLinkNode* s, * r; L = (DLinkNode*)malloc(sizeof(DLinkNode)); L->next = L->prior = NULL; r = L; for (int i = 0; i < n; i++) { s = (DLinkNode*)malloc(sizeof(DLinkNode)); s->data = a[i]; r->next = s; s->next = NULL; s->prior = r; r = s; } r->next = NULL; } 插入节点 bool ListInsert(DLinkNode*& L, int i, int e) { DLinkNode* p,* s; p = L; s = (DLinkNode*)malloc(sizeof(DLinkNode)); int j = 0; while (j < i - 1 && p != NULL) { p = p->next; j++; } if (p == NULL) return false; else { s->data = e; s->next = p->next; if (p->next != NULL) { p->next->prior = s; } p->next = s; s->prior = p; return true; } } 删除节点 bool ListDelete(DLinkNode*& L, int i, int& e) { DLinkNode* p = L,* q; int j = 0; if (i < 0) return false; while (j < i - 1&& p != NULL) { j++; p = p->next; } if (p == NULL) return false; else { q = p->next; if (q == NULL) return false; else { e = q->data; p->next = q->next; if (q->next != NULL) { p->next->prior = p; } free(q); return true; } } } 逆置 void reserse(DLinkNode*& L) { DLinkNode* p = L->next,* q; L->next = NULL; while (p != NULL) { q = p->next; p->next = L->next; if (L->next != NULL) { L->next->prior = p; } L->next = p; p->prior = L; p = q; } } 递增 void sort(DLinkNode*& L) { DLinkNode* p, * q, * pre; p = L->next->next; L->next->next = NULL; while (p != NULL) { pre = L; q = p->next; while (pre->next != NULL && pre->next->data < p->data) { pre = pre->next; } p->next = pre->next; if (pre->next != NULL) { pre->next->prior = p; } pre->next = p; p->prior = pre; p = q; } } 转载于:https://www.cnblogs.com/KIROsola/p/11318179.html
相关 链表(二) 双链表操作详解 文章目录 四、双向带头循环链表的实现 List.h List.c 创建返回链表的头结点 双向链表 淩亂°似流年/ 2024年03月23日 17:43/ 0 赞/ 98 阅读
相关 双链表 1、建立双链表 /头插法/ void CreateDLink(DLinkNode& L, ElemType a[], int n) { DL 矫情吗;*/ 2023年08月17日 15:15/ 0 赞/ 150 阅读
相关 双链表算法 双链表最大的优势就是可以双向遍历 package main import "fmt" type Node struct { た 入场券/ 2023年07月12日 14:42/ 0 赞/ 10 阅读
相关 双链表改造 要求:设双链表表示的线性表L=(a1,a2…an),试写一段时间复杂度为O(n)的算法,将L改造为L=(a1,a3,…an,…a4,a2)。 //第7题 分手后的思念是犯贱/ 2022年12月31日 01:12/ 0 赞/ 179 阅读
相关 双链表实例 我们实现一个功能,26个字母,我们输入一个正数就从前面数到这个正数的位置按顺序开始输出,一共输出26个字母,比如输入3,那么输出: D E F G H I J K L M N 分手后的思念是犯贱/ 2022年08月08日 06:11/ 0 赞/ 215 阅读
相关 双端链表 双端链表与传统的链表很相似,在基本链表的基础上新增一个特性:对最后一个结点的引用。如下图所示: ![这里写图片描述][20160904132653300] 与之前说到 ╰半橙微兮°/ 2022年07月18日 01:25/ 0 赞/ 235 阅读
相关 双链表 双向链表 双向链表中,每个结点都有两个指针域,一个指向其后继结点,另一个指针指向其前驱结点,如图1.1(a)所示,因此,可以从某个结点开始朝两个方向遍历整个链表。 客官°小女子只卖身不卖艺/ 2022年07月16日 04:59/ 0 赞/ 295 阅读
相关 双链表实现 以前写的不带头的单链表实现,当时也啥也没学,好多东西不知道,加上一心想压缩代码,减少情况,所以写得不太好。 请教了老师,首先是命名问题和代码紧凑性等的改进。还有可读性方面的改 柔情只为你懂/ 2022年05月10日 20:50/ 0 赞/ 294 阅读
相关 双链表例题 1.在带头结点的双链表中的第一个值为X的节点之前插入元素值为y的节点(假设双链表中不存在两个至于相同的节点)。算法:先从第一个有数据的节点开始遍历双链表,找到元素为x的节点之后 ﹏ヽ暗。殇╰゛Y/ 2022年03月18日 05:11/ 0 赞/ 229 阅读
相关 Java双链表 一、概述 ![1007094-20190729154426250-1175775918.png][] 二、英雄类 1 class HeroN 小灰灰/ 2021年11月16日 09:30/ 0 赞/ 400 阅读
还没有评论,来说两句吧...