
数据结构
小飒要学习
这个作者很懒,什么都没留下…
展开
-
一般集合的合并(并集)
线性表的合并(一般线性表的并集问题)原创 2022-08-18 17:04:40 · 367 阅读 · 1 评论 -
设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点
设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点。原创 2022-08-14 01:02:06 · 886 阅读 · 1 评论 -
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错误信息并退出运行。
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错误信息并退出运行。原创 2022-08-10 22:41:54 · 1619 阅读 · 2 评论 -
//假设长度大于1的循环单链表中,既无头结点也无头指针,p为指向该链表中某一结点的指针,编写 一个函数删除该结点的前驱结点。
结构体:typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;实现算法: void DeletePre(LinkList &L,LNode *p) { LNode *pre = L; LNode *q; while(pre->next->next != p) { pre = pre->next; }//此循环找到结点p q = pre->next原创 2021-12-23 22:15:50 · 5230 阅读 · 8 评论 -
删除带头结点的非空单链表中值相同的多余结点
结构体为: typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList;算法段:void Delete(LinkList &L) { LNode *p = L->next; LNode *pre; LNode *q; LNode *t; while(p->next != NULL) { pre = p; q = pre->next; while原创 2021-12-15 23:17:18 · 1930 阅读 · 0 评论 -
折半查找(二分查找)
折半查找也称二分查找,它是一种效率比较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。折半查找的查找过程:从表的中间记录开始,如果给定值和中间记录的关键字相等,则查找成功;如果给定值大于或者小于中间记录的关键字,则在表中大于或小于中间记录的那一半中查找,这样重复操作,直到查找成功,或者在某一步中查找区间为空,则代表查找失败。为了标记查找过程中每一次的查找区间,分别用 low和 high来表示当前查找区间的下界和上界,mid 为区间的中间位置。算法步骤:1、置原创 2021-11-26 02:10:29 · 2695 阅读 · 0 评论 -
二叉排序树的查找、插入、创建
二叉排序树又称二叉查找树,它是一种对排序和查找都有用的特殊二叉树。二叉排序树的定义:二叉排序树或者是一颗空树,或者具有下列性质的二叉树:(1)、若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。(2)、若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。(3)、它的左、右子树也分别为二叉排序树。二叉排序树是递归定义的。由定义可以得出二叉排序树的一个重要性质:中序遍历一颗二叉排序树时可以得到一个结点值递增的有序序列。二叉排序树的二叉链表存储表示:typedef struc原创 2021-11-24 23:35:33 · 4362 阅读 · 0 评论 -
顺序表下实现的顺序查找
顺序表代表的是一种存储方法,顺序查找是一种查找方法。顺序查找的找过程:从表的一端开始,依次将记录的关键字和给定值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,仍未找到关键字和给定值相等的记录,则查找失败。顺序查找方法既适用于线性表的顺序存储结构,又适用于线性表的链式存储结构。本篇只介绍顺序表作为存储结构时实现的顺序查找算法。数据元素类型定义如下:typedef struct{ KeyType key; Infotype otherinfo;}ElemType;原创 2021-11-22 01:22:49 · 2302 阅读 · 2 评论 -
有序表的合并
有序表:若线性表中的数据元素相互之间可以相互比较,并且数据元素在线性表中依值非递减或非递增有序排列,则称该线性表为有序表。有序集合:指集合中的元素有序排列已知两个有序集合A和B,数据元素按值非递减有序排列,现要求一个新集合C = A U B,使集合C中的数据元素扔按值非递减有序排列。算法如下:1、顺序有序表的合并算法思想:1.1、创建一个长为m+n的空表LC1.2、指针pc初始化,指向LC的第一个元素1.3、指针pa,pb初始化,分别指向LA和LB的第一个元素1.4、当指针pa和pb均未到原创 2021-11-17 02:19:32 · 3819 阅读 · 2 评论 -
设单链表的表头指针为L,结点结构由data和next两个域构成,其中data域为字符型,试设计算法判断该链表的全部n个字符是否中心对称。
算法设计:设单链表的表头指针为L,结点结构由data和next两个域构成,其中data域为字符型,试设计算法判断该链表的全部n个字符是否中心对称。算法思想:使用栈来判断链表中的数据是否中心对称。判断n为奇数或偶数,若n为奇数,则有一个中心结点为n%2+1,让链表的前n%2个元素依次进栈,在处理链表的后面元素时,先跳过中心结点,(若n为偶数,则不用直接从n%2+1个元素开始)访问一个链表元素,就从栈中弹出一个元素,两个元素比较,若相等,则将链表中的下一个元素于栈中再弹出的元素比较。直到链表到尾。这时若站原创 2021-11-08 00:54:53 · 5251 阅读 · 0 评论 -
双向链表插入和删除
在单链表中,查找直接后继结点的执行时间为O(1),而查找直接前驱的执行时间为O(n);为了克服单链表这种单向性的缺点,双向链表就产生了。双向链表的结点中有两个指针域,一个指向直接后继,另一个指向直接前驱。显然有:若p为指向表中某一结点的指针,则有:p->next->prior = p->prior->next = p;双向链表的存储结构如下:typedef struct DuLNode{ ElemType data; //数据域 struct DuLNode原创 2021-11-02 01:01:35 · 4913 阅读 · 0 评论 -
用邻接矩阵表示一个无向图
实现的操作有:增加一个结点删除一个结点增加一条边删除一条边邻接矩阵的存储表示:typedef struct{ VerTexType vexs[MVNum]; //顶点表 ArcType arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //图的当前点数和边数 }AMGraph;具体实现代码:#include <iostream>using na原创 2021-06-23 03:56:12 · 1710 阅读 · 0 评论 -
用顺序表实现一个简单的学生信息管理系统
用顺序表实现一个简单的学生信息管理系统,包括如下功能:(1) 创建学生表(2) 输出学生表(3) 增加学生信息(4) 删除学生信息(指定学号或者序号,如第几个学生)(5) 按照给定的学号查找学生信息(6) 插入学生信息学生信息结点类型如下:typedef struct {int no;//学号定义为整型为了方便查找和删除操作,实际中应该定义为//字符数组或字符串 char n...原创 2019-12-28 01:25:42 · 11529 阅读 · 8 评论 -
BF算法的介绍及具体实现代码
串的模式匹配算法的介绍:子串的定位运算通常称为串的模式匹配或串匹配;最简单的模式匹配算法是BF算法。算法描述:int Index_BF(SString S,SString T,int pos) {//返回模式T在主串S中的第pos个字符开始第一次出现的位置。若不存在,则返回值为0 //其中,T非空,1<=pos<=S.length int i = pos,j = 1;//初始化 while(i <= S.length && j <= T.lengt原创 2021-06-06 23:28:54 · 5932 阅读 · 0 评论 -
顺序栈与链栈的实现与区别
顺序栈顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时设有指针top指示栈顶元素在顺序栈中的位置;另设指针base指示栈底元素在顺序栈中的位置。当top和base的值相等时,表示空栈。顺序栈的存储实现#define MAXSIZE 100typedef struct{ SElemType *base;//栈底指针 SElemType *top;//栈顶指针 int stacksize;//栈可用的最大容量}SqStack;顺序栈的初始原创 2021-06-02 10:27:32 · 8840 阅读 · 1 评论 -
线性表的链式存储表示和实现(单链表)
线性表链式存储结构的特点是:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是比连续的)。注:ElemType 表示为通用类型标识符,习惯上用LinkList定义单链表,强调定义的是某个单链表的头指针;用LNode *定义指向单链表中任意节点的指针变量。1、 单链表的存储结构typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;2、单链表的初始化Status Init原创 2021-05-30 13:30:20 · 1023 阅读 · 0 评论