![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
MyDreamingCode
Life is not a bed of roses.
展开
-
用循环链表表示的稀疏多项式分解成两个多项式
用循环链表表示的稀疏多项式分解成两个多项式原创 2022-11-26 22:29:57 · 725 阅读 · 1 评论 -
合并两个递增有序的单链表,使合并后仍递增有序
//合并两个递增有序的链表#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;//初始化单链表void InitList(LinkList &L){ L = (LinkList)malloc(sizeof(LNode)); L->next.原创 2021-12-10 16:43:13 · 457 阅读 · 0 评论 -
统计二叉树中叶子结点个数
#include<stdio.h>#include<stdlib.h>typedef char ElemType;typedef struct BTNode{ ElemType data; struct BTNode *left; struct BTNode *right;}BTNode,*BiTree;//创建二叉树void createBTNode(BiTree &BT){ ElemType ch; scanf("%c",&ch);.原创 2021-11-16 17:11:06 · 3881 阅读 · 0 评论 -
二叉树的创建+先序、中序,后序遍历
#include<stdio.h>#include<stdlib.h>typedef char ElemType;typedef struct BTNode{ ElemType data; struct BTNode *left; struct BTNode *right;}BTNode;//创建二叉树void createBTNode(BTNode *&BT){ ElemType ch; scanf("%c",&ch); if(ch.原创 2021-11-16 16:22:45 · 2289 阅读 · 3 评论 -
利用栈来判断单链表中元素是否对称
#include<stdio.h>#include<stdlib.h>#define MaxSize 100typedef char ElemType;typedef struct Stack{ ElemType data[MaxSize]; int top;}SqStack;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void InitStack(.原创 2021-11-11 21:47:59 · 736 阅读 · 0 评论 -
循环双链表-删除元素
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LDNode{ ElemType data; struct LDNode *next; struct LDNode *prior;}LDNode,*DLinkList;DLinkList insertTailElem(DLinkList &L){ L = (DLinkList)malloc(sizeof(LDN.原创 2021-11-05 10:40:24 · 293 阅读 · 0 评论 -
循环双链表-增添元素
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LDNode{ ElemType data; struct LDNode *next; struct LDNode *prior;}LDNode,*DLinkList;DLinkList insertTailElem(DLinkList &L){ L = (DLinkList)malloc(sizeof(LDN.原创 2021-11-05 10:28:49 · 128 阅读 · 0 评论 -
循环单链表-查找元素
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next;}LNode,*LinkList;LinkList listTailInsert(LinkList &L){ ElemType x; LNode *s,*r; L = (LinkList)malloc(sizeof(LNode).原创 2021-11-05 09:44:03 · 535 阅读 · 0 评论 -
循环单链表-删除元素
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next;}LNode,*LinkList;LinkList listTailInsert(LinkList &L){ ElemType x; LNode *s,*r; L = (LinkList)malloc(sizeof(LNode).原创 2021-11-05 09:38:46 · 993 阅读 · 0 评论 -
循环单链表-增添元素
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next;}LNode,*LinkList;LinkList listTailInsert(LinkList &L){ ElemType x; LNode *s,*r; L = (LinkList)malloc(sizeof(LNode).原创 2021-11-05 09:31:35 · 356 阅读 · 0 评论 -
(a1,a2,a3,...,an-2,an-1,an)排列成(a1,an,a2,an-1,a3,an-2)
/*设线性表L=(a1,a2,a3,...,an-2,an-1,an)采用带头结点的单链表保存,链表的结构为data、next。请设计一个空间复杂度为O(1)且时间上尽可能高效的算法,重新排列L中的各结点,得到线性表L'=(a1,an,a2,an-1,a3,an-2)。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct.原创 2021-09-12 06:59:29 · 849 阅读 · 0 评论 -
删除其余(取绝对值)相同的结点
/*用单链表保存m个整数,结点的结构为data、link,且|data|<=n(n为正整数)。现要求设计一个时间复杂度尽可能高效的算法,对于链表中data的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。例如{21,-15,-15,-7,15}->{21,-15,-7}*/方法一:#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ .原创 2021-09-12 06:59:19 · 353 阅读 · 0 评论 -
寻找共享后缀初始结点
/*假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,可共享相同的后缀存储空间。设str1和srt2分别指向两个单词所在单链表的头结点,链表节点结构为data、next,请设计一个时间上尽可能高效的算法,找出由str1和str2所指向两个链表共同后缀的起始位置。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; stru.原创 2021-09-12 06:58:53 · 247 阅读 · 0 评论 -
寻找倒数第k个位置
/*已知一个带有表头结点的单链表,结点结构为data、link。假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data域值,并返回1;否则,只返回0。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct L.原创 2021-09-12 06:58:28 · 164 阅读 · 0 评论 -
按访问频度域添加结点
/*设头指针为L的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针)、data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被启用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点前面,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x)运算的算法,该运算为函数的过程,返回找到结点的地.原创 2021-09-12 06:58:11 · 374 阅读 · 0 评论 -
依次输出最小值
/*设有一个带头结点的循环单链表,其结点值均为正整数。设计一个算法,反复找出单链表中结点值最小的结点并输出,然后将该结点从中删除,直到单链表空为止,再删除表头结点。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList createHeadL.原创 2021-09-12 06:57:46 · 140 阅读 · 0 评论 -
链接两个循环单链表
/*有两个循环单链表,链表头指针分别为h1和h2,编写一个函数将链表h2链接到链表h1之后,要求连接后的链表仍保持循环链表形式*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList createHeadList(LinkList &L.原创 2021-09-12 06:56:59 · 1192 阅读 · 4 评论 -
判断双链表是否对称
/*设计一个算法用于判断带头结点的循环双链表是否对称*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct DNode{ ElemType data; struct DNode *next; struct DNode *prior;}DNode,*DLinkList;DLinkList createHeadList(DLinkList &L){ ElemType.原创 2021-09-14 07:19:24 · 381 阅读 · 0 评论 -
判断是否为子序列
/*两个整数序列A=a1,a2,a3,...,am和B=b1,b2,b3,...,bn已存入两个单链表中,设计一个算法,判断序列B是否是序列A的连续子序列*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList createHeadList(L.原创 2021-09-11 00:27:19 · 551 阅读 · 0 评论 -
求两个链表的交集
/*已知两个链表A和B分别表示两个集合,其元素递增排列。编制函数,求A与B的交集,并存放于A链表中*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList createHeadList(LinkList &L){ LNode *r;.原创 2021-09-11 00:27:09 · 1862 阅读 · 0 评论 -
合并两个递增排序的链表,并使合成后的链表递减排序
/*假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList creat.原创 2021-09-11 00:26:55 · 450 阅读 · 0 评论 -
递增有序链表中删除数值相同的结点
/*在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素,例如(7,10,10,21,30,42,42,42,51,70)将变为(7,10,21,30,42,51,70)。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}L.原创 2021-09-11 00:24:57 · 519 阅读 · 0 评论 -
就地分解奇偶序号元素
/*设C={a1,b1,a2,b2,...,an,bn}为线性表,采用带头结点的hc单链表存放,设计一个就地算法,将其拆分为两个线性表,使得A={a1,a2,...,an},B={bn,...,b2,b1}。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;.原创 2021-09-11 00:24:47 · 61 阅读 · 0 评论 -
分解奇偶序号元素分别至A、B表
/*将一个带头结点的单链表A分解为两个带头结点的单链表A和B,使得A表中含有原表中序号为奇数的元素,而B表中含有原表中序号为偶数的元素,且保持其相对顺序不变。*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList createHeadList(.原创 2021-09-11 00:24:37 · 83 阅读 · 0 评论 -
按递增次序输出并删除结点
/*给定一个带表头结点的单链表,设head为头指针,结点结构为(data,next),data为整型元素,next为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间(要求:不允许使用数组作为辅助空间)*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LN.原创 2021-09-11 00:24:24 · 207 阅读 · 0 评论 -
查找两个单链表的公共结点
/*给定两个单链表,编写算法找出两个链表的公共结点*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ L = (LinkList)malloc(sizeof(LNode.原创 2021-09-11 00:24:13 · 410 阅读 · 0 评论 -
删除给定值范围内的元素结点
/*设在一个带表头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素的元素(若存在)*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(Lin.原创 2021-09-11 00:24:00 · 104 阅读 · 0 评论 -
链表-使元素递增有序
/*有一个带头结点的单链表L,设计一个算法使其元素递增有序*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ L = (LinkList)malloc(sizeof(L.原创 2021-09-11 00:23:47 · 345 阅读 · 0 评论 -
单链表-就地逆置
/*试编写算法将带头结点的单链表就地逆置,所谓"就地"是指辅助空间复杂度为O(1)*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ L = (LinkList)ma.原创 2021-09-10 06:41:26 · 677 阅读 · 0 评论 -
链表-删除最小值结点
/*试编写在带头结点的单链表L中删除一个最小值结点的高效算法(假设最小值结点是唯一的)*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ L = (LinkList).原创 2021-09-10 06:41:16 · 262 阅读 · 0 评论 -
链表-反向输出结点
/*设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ L = (LinkList)malloc(si.原创 2021-09-10 06:41:04 · 230 阅读 · 0 评论 -
删除所有值为x的结点(非递归)
/*在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ .原创 2021-09-10 06:39:46 · 561 阅读 · 0 评论 -
递归算法删除所有值为x的结点
/*在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList TailCreateList(LinkList &L){ .原创 2021-09-10 06:40:52 · 332 阅读 · 0 评论 -
链表的基本操作
/*关于链表的基本操作*/#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;//采用头插法建立单链表LinkList List_HeadInsert(LinkList &L){ LNode *s; ElemType x; L = (Link.原创 2021-09-10 06:39:34 · 53 阅读 · 0 评论