![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 59
Cloudcodes
v:okfine_lxh
注明来意
展开
-
数据结构⑤:查找操作
一、要求:(1)随机产生n个互不相同的两位整数,构造一个查找表。(2)输入一个整数,利用顺序查找法在查找表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。(3)对查找表按递增顺序进行排序。(4)输入一个整数,利用折半查找法在有序表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。(5)输入互不相同的一组整数,构造一棵二叉排序树,要求: ① 按递减有序的顺序输出; ② 输入一个整数,查找该整数是否在该二叉排序树中,查找成功返回1,否则返回0;原创 2021-02-01 12:38:33 · 1291 阅读 · 2 评论 -
数据结构④:图的遍历
一、要求:(1)输入一组顶点,建立无向图的邻接矩阵。(2)输入一组顶点,建立有向图的邻接表。(3)分别对无向图和有向图进行DFS(深度优先遍历)和BFS(广度优先遍历)。写出深度优先遍历的递归和非递归算法。(4)根据建立的有向图,判断该图是否是有向无环图,若是,则输出其一种拓扑有序序列。二、思路:1)邻接矩阵的建立: 在图G=(V,E)中,根据输入的顶点和边的信息,若顶点Vi与顶点Vj的存在边,且边(Vi,Vj)∈E或边<Vi,Vj>∈E,则将邻接矩阵中的G.arcs[i][j]原创 2021-02-01 12:07:58 · 793 阅读 · 2 评论 -
数据结构②:栈与队列的应用
一、要求:1)输入一个十进制数,利用栈操作,将该数转换成n进制数。2)输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。二、思路:1)进制转换任意一个十进制正整数n,都能转化为一个d进制正整数。该算法基于原理n=(n/d)*d+n%d 。在n不为0的前提下,执行循环操作:让n%d的结果入栈,并执行n=n/d改变n值。计算结束后,再将栈中的元素依次出栈,即可得到从高位到低位的输出结果。此处要考虑两种情况,一种是将十进制转为低于10的进制的情况,另一种是原创 2021-02-01 11:19:27 · 736 阅读 · 1 评论 -
数据结构③:二叉树的操作
(1)输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树的二叉链表。(2)写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。(3)写出对用二叉链表存储的二叉树进行层次遍历算法。(4)求二叉树的所有叶子及结点总数。(5)求二叉树的深度。代码:#include<stdio.h>#include<stdlib....原创 2019-11-19 19:45:26 · 880 阅读 · 0 评论 -
数据结构⑥:排序算法应用
给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作:设计一个显示对学生信息操作的菜单函数如下所示:1、录入学生基本信息2、直接插入排序3、冒泡排序4、快速排序5、简单选择排序6、堆排序7、2-路归并排序8、输出学生信息0、退出请选择:算法设计要求:按分数从高到低的顺序进行排序,分数相同的为同一名次。输入的学生信息存入文件中,每选择一种排...原创 2020-01-29 21:05:07 · 2642 阅读 · 3 评论 -
数据结构:二叉树的转换与应用
一、要求下图中所给树表示的是某家族的家谱: (1)此家谱在内存中我们选择什么样的存储结构合适?并画出转化后的存储结构 (2)写算法输出家谱中各结点孩子数目二、代码和结果1.转化后的存储结构:2.代码:#include<stdio.h>#include<stdlib.h>typedef struct CSNode{ char data; struct CSNode *firstchild,*nextsibling;}CSNode,*CSTree;voi原创 2021-02-01 12:16:07 · 166 阅读 · 0 评论 -
数据结构:栈的应用(中缀表达式)
一、要求:输入一个表达式,表达式中只包含整数和加、减、乘、除四种双目运算符,计算给定表达式的值(参考中缀表达式求值)二、代码:#include<stdio.h>#include<stdlib.h.>#include<string.h>#define StackInitSize 100#define StackIncrement 10typedef struct{ char *base; int top; int stacksize;}SqStac原创 2021-02-01 11:33:30 · 1402 阅读 · 1 评论 -
数据结构:单链表的操作
一、要求设指针la和lb分别指向两个无头结点单链表中的首元结点,试设计从表la中删除自第i个元素起共len个元素,并将它们插入到表lb的第j个元素之后的算法。二、代码#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//*********链表初始化**********//void InitLinkList(原创 2021-02-01 11:07:23 · 1210 阅读 · 1 评论 -
数据结构①:线性表的基本操作
一、要求:1.顺序表的操作①随机产生一组2位整数,建立线性表的顺序存储结构,要求表中元素互不相同。② 实现该线性表的遍历。③ 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。④ 在该顺序表中删除或插入指定元素。⑤ 建立两个按值递增有序的顺序表,将他们合并成一个按值递减有序的顺序表。2.单链表的操作① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。② 实现该线性表的遍历。③ 实现单链表的就地逆置。④ 建立两个按值递增有序的单链表,将他们合并成一个按值递增原创 2021-02-01 11:00:25 · 2847 阅读 · 0 评论