数据结构题集
AlexCookie
感谢互联网,让我在知识的海洋遨游,感谢广大网友,把所学知识分享,咱们一起进步!博主主分享:算法,计算机方向。
展开
-
计算机复试题总结(二)
什么是平衡二叉树高度差左右子树的平衡因子之差不超过1,并且左右子树都是平衡二叉树。说下佛洛依德算法Floyd算法求最短路径G=(V,E)中各个顶点最短路径时,需要引入矩阵d,矩阵中d[i][j]表示点i到点j的距离。香浓定理和奈奎斯特定理香农定理给出了传输速率和信噪比和带宽的关系,带宽不同吞吐量不同。奈奎斯特定理是信息速率,极限速率等于2倍信道带宽。E-R模型实体(考虑问题的对象),属性(实体和联系的特性),联系(实体之间的联系)全局变量能否再重命名同名局部变量原创 2022-03-19 15:24:55 · 372 阅读 · 0 评论 -
线索树找*p的中序后继且中序遍历 二叉线索树
//线索树找*p的中序后继且中序遍历 二叉线索树#define thread 1#define link 0typedef struct Bt{ char data; struct Bt *lc;//左孩子 struct Bt *rc;//右孩子 struct Bt *ltag;//左标识 struct Bt *rtag;//右标识 }*Bt;Bt SBack(Bt p);//找后继 //中序 void mider(Bt p){ while(p->lc == lin.原创 2022-03-05 16:34:10 · 2030 阅读 · 0 评论 -
基于广度优先搜索,判别以邻接表方式存储的有向图是否有顶点v到顶点u的路径。
广度优先 目标边编号(类似 层序遍历)层序,先序,广度 考虑 队列深度,后序 考虑栈//基于广度优先搜索,判别以邻接表方式存储的有向图是否有顶点v到顶点u的路径。 #include <stdio.h>#include <malloc.h>#include <queue>//队列实现深度优先 using namespace std;#define N 11typedef struct node{ int aimdex;//箭头指向结点的编号原创 2021-12-11 23:52:29 · 1313 阅读 · 0 评论 -
基于深度优先,判别以邻接表方式存储的有向图是否有顶点v到顶点u的路径。
/*基于深度优先,判别以邻接表方式存储的有向图是否有顶点v到顶点u的路径。 */ #include <stdio.h>#include <malloc.h> using namespace std;#define N 11typedef struct node{ int aimdex;//箭头指向结点的编号 struct node *next;//指向下一个结点 }node; typedef struct listnode{ int index; .原创 2021-12-11 23:48:19 · 1102 阅读 · 0 评论 -
以二叉链表存储的二叉树中,每个结点所含数据元素均为单单字母,按树状打印二叉树的算法。
观察序列 可以发现树状序列 等于 中序遍历的 逆序, 实际实现 中序遍历的逆序/*以二叉链表存储的二叉树中,每个结点所含数据元素均为单单字母,按树状打印二叉树的算法。 *///观察序列 可以发现树状序列 等于 中序遍历的 逆序, 实际实现 中序遍历的逆序 #include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动态申请空间 函数//二叉树 结点 struct node{ ch.原创 2021-12-10 22:54:25 · 1523 阅读 · 0 评论 -
以儿子兄弟链表为树的存储结构,按凹入表方式打印一颗树的算法。
如有树 按孩子兄弟法转化 A -->孩子兄弟表示法 A B C D B E F G E C F G D观察...原创 2021-12-10 22:52:23 · 1931 阅读 · 0 评论 -
对于一个二叉树中每一个结点值为x的结点,删去以它为根的子树并释放空间。
对于一个二叉树中每一个结点值为x的结点,删去以它为根的子树并释放空间。/*对于一个二叉树中每一个结点值为x的结点,删去以它为根的子树并释放空间。 */#include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动态申请空间 函数//二叉树 结点 struct node{ char data; struct node *lchild,*rchild;}bnode;typedef str原创 2021-12-05 23:12:00 · 2763 阅读 · 1 评论 -
将二叉树中所有结点的左右子树相互交换。
将二叉树中所有结点的左右子树相互交换。/*将二叉树中所有结点的左右子树相互交换。 */#include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动态申请空间 函数//二叉树 结点 struct node{ char data; struct node *lchild,*rchild;}bnode;typedef struct node * blink;//先序 建立 二叉数原创 2021-12-05 22:42:40 · 3685 阅读 · 0 评论 -
编写递归算法,计算二叉树叶子结点的数目。
编写递归算法,计算二叉树叶子结点的数目。/*编写递归算法,计算二叉树叶子结点的数目。 */#include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动态申请空间 函数//二叉树 结点 struct node{ char data; struct node *lchild,*rchild;}bnode;typedef struct node * blink;//计算二叉树叶子结.原创 2021-12-05 12:51:08 · 8956 阅读 · 1 评论 -
后序遍历的非递归形式的算法。
后序遍历的非递归形式的算法。/*后序遍历的非递归形式的算法。 */#include <stdio.h>#include <malloc.h>//用来申请二叉树结点空间 #include <stack>using namespace std;//std空间 typedef struct node{ char data; int flag;//结点是否入过栈 标识 ,初始为0 struct node* lchild; struct node.原创 2021-12-04 22:54:47 · 1678 阅读 · 0 评论 -
先序遍历的非递归形式,用栈的基本操作实现
/*用栈的基本操作实现先序遍历的非递归形式的算法。 */#include <stdio.h>#include <malloc.h>//用来申请二叉树结点空间 #include <stack>using namespace std;//std空间 typedef struct node{ char data; struct node* lchild; struct node* rchild;}node,*pnode;//层序 建立 二叉数 p.原创 2021-12-04 22:18:48 · 970 阅读 · 1 评论 -
在定长顺序存储结构表示串,求串中出现的第一个最长重复子串及其位置。
//直接子串和子串比较,查看所有字符串//比如 字符串 aabcbc, 先遍历第一个元素a,从第二个开始找,找到某个跟他一样的,//开始游标k++,j++...然后记录相等子串长度;以此找到最长重复子串//在a[]数组中 以当前i下标开始 和 以k下标开始 开始游标比对(找到相同元素的时候调用,看它们之后的元素是否仍匹配)/*在定长顺序存储结构表示串,求串中出现的第一个最长重复子串及其位置。 */#include <stdio.h>#define N 31//直接子串原创 2021-12-03 23:05:44 · 827 阅读 · 0 评论 -
以结点大小为1,且带有头结点的链表结构表示串,实现串的六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数
以结点大小为1,且带有头结点的链表结构表示串,实现串的六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数/*以结点大小为1,且带有头结点的链表结构表示串,实现串的六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数 *///结点 typedef struct node{ char data; struct node *.原创 2021-12-03 14:44:04 · 536 阅读 · 0 评论 -
数组实现串的六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数
数组实现串的六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数/*实现串的六种串的基本操作StrAssign,StrCopy,StrCompare,StrLength,Concat和SubString的函数 *///结点 typedef struct node{ char data;}node,*pnode;#include <stdio.h>#define N 51//取较大值 i.原创 2021-12-03 13:20:37 · 3921 阅读 · 0 评论 -
编写一个实现串的置换操作Replace(&S,T,V)
串的置换操作 用串v置换出 串s中与t相同的所有非空串/*编写一个实现串的置换操作Replace(&S,T,V).*/#include <stdio.h>//获取串长度 int get_stringSize(char *p);//打印 void print_string(char *p);// 串的置换操作 用串v置换出 串s中与t相同的所有非空串 void replace(char s[],char t[],char v[]){ int len_v = .原创 2021-12-02 23:33:55 · 4103 阅读 · 0 评论 -
以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。给出队满条件和相应的如对和出队算法。
以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。给出队满条件和相应的如对和出队算法。/*以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。给出队满条件和相应的如对和出队算法。 */#include <stdio.h>#include <malloc.h>#define N 10typedef struct node{ int data; struct node *rear,*front;//域原创 2021-12-01 22:17:32 · 2230 阅读 · 0 评论 -
正读和反读都相同的字符序列为“回文”,现判别读入一个以‘@‘为结束符的字符序列是否为“回文”。
正读和反读都相同的字符序列为“回文”,现判别读入一个以'@'为结束符的字符序列是否为“回文”。/*正读和反读都相同的字符序列为“回文”,现判别读入一个以'@'为结束符的字符序列是否为“回文”。 */#include <stdio.h>#define N 30//获取字符数组长度 int get_arrsize(char a[]){ int length = 0; while(a[length ++] != '\0'); return length - 1;}/原创 2021-12-01 22:16:20 · 2575 阅读 · 0 评论 -
以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),实现队列的初始化,入队和出队。
没有头指针采取从头结点往后遍历,找第一个出队的元素,如果没有找到(从头结点开始,然next等于头结点,说明绕了一圈),则返回-1;/*以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),实现队列的初始化,入队和出队。 */#include <stdio.h>#include <malloc.h>#define N 10typedef struct node{ int data; struct node* next;}node,*原创 2021-11-29 23:31:11 · 6784 阅读 · 0 评论 -
表达式由单字母变量和双目四则运算算符构成。现将一个表达式转换为逆波兰式(所有 操作符 置于 操作数 的后面,因此也被称为 后缀表示法 。)。
用二叉树遍历算法求该中缀表达式对应的后缀(逆波兰)表达式。/*表达式由单字母变量和双目四则运算算符构成。现将一个表达式转换为逆波兰式(所有 操作符 置于 操作数 的后面,因此也被称为 后缀表示法 。)。 *//*建立合法的表达式字符串只含二元操作符的非空表达式数用二叉树遍历算法求该中缀表达式对应的后缀(逆波兰)表达式*/ #include "stdio.h"//包含 getchar() scanf() printf() #include "malloc.h"//malloc()动原创 2021-11-28 23:46:31 · 1408 阅读 · 0 评论 -
识别依次读入的一个以@为结束符的字符序列是否为形如‘序列&序列’模式的字符序列。其中两个序列都不含‘&’,且后序列为前一个序列的逆序列。如,‘a+b&b+a’是,而‘1+3&3-1’不是。
识别依次读入的一个以@为结束符的字符序列是否为形如‘序列&序列’模式的字符序列。其中两个序列都不含‘&’,且后序列为前一个序列的逆序列。如,‘a+b&b+a’是,而‘1+3&3-1’不是。/*识别依次读入的一个以@为结束符的字符序列是否为形如‘序列&序列’模式的字符序列。其中两个序列都不含‘&’,且后序列为前一个序列的逆序列。如,‘a+b&b+a’是,而‘1+3&3-1’不是。 */#include <stdio..原创 2021-11-28 22:38:53 · 2579 阅读 · 0 评论 -
求一元多项式pn(x)=a(i)x^i(i~n的和)的值pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为a(i)(i=0,1,.
求一元多项式pn(x)=a(i)x^i(i~n的和)的值pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为a(i)(i=0,1,...,n),x0和n,输出为pn(x0);/*求一元多项式pn(x)=a(i)x^i(i~n的和)的值pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为a(i)(i=0,1,...,n),x0和n,输出为pn(x0); */#.原创 2021-11-24 15:10:22 · 2404 阅读 · 0 评论 -
计算i阶乘*2^i(i=0,1,...,n-1)的值并分别存入数组a[arrsize]的各个分量中。假设计算机中允许的整数最大值为MAXINT,则当n>arrsize或对某个k(0<=k<=n-1)
计算i!*2^i(i=0,1,...,n-1)的值并分别存入数组a[arrsize]的各个分量中。假设计算机中允许的整数最大值为MAXINT,则当n>arrsize或对某个k(0<=k<=n-1)使k!*2^k>MAXINT时,应该按出错处理。注意选择逆认为较好的出错处理方法。/*计算i!*2^i(i=0,1,...,n-1)的值并分别存入数组a[arrsize]的各个分量中。假设计算机中允许的整数最大值为MAXINT,则当n>arrsize或对某个k(0<原创 2021-11-24 15:13:01 · 1159 阅读 · 0 评论 -
假设有A,B,C,D,E五个高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一张表,表中每一行形式为(项目名称,性别,校名,成绩,得分)处理上述表格,以统计各院校男,女总分和团体总分
假设有A,B,C,D,E五个高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一张表,表中每一行形式为(项目名称,性别,校名,成绩,得分)处理上述表格,以统计各院校男,女总分和团体总分,并输出。/*假设有A,B,C,D,E五个高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一张表,表中每一行形式为(项目名称,性别,校名,成绩,得分)处理上述表格,以统计各院校男,女总分和团体总分,并输出。 */#include <stdio.h>#define .原创 2021-11-24 15:14:00 · 1860 阅读 · 0 评论 -
编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。
编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。/*编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。 */#include <stdio.h>//斐波那契数列的阶数 表示它从多少阶再-1开始 递增如k为3就是没有常说的从第二项开始增加即0 1 1 2 3... int f = 0;//全局变量保存 要获取的k阶 第m项的值 void get_Fibonacci_Value(int k,int m原创 2021-11-24 15:15:05 · 1220 阅读 · 0 评论 -
自大至小依次输出顺序读入的三个整数X,Y,Z的值
自大至小依次输出顺序读入的三个整数X,Y,Z的值/*自大至小依次输出顺序读入的三个整数X,Y,Z的值 */#include <stdio.h>int mmax(int a,int b)//求两个数中最大值 { return a > b ? a : b;}int main(){ int x = 0,y = 0,z = 0; scanf("%d%d%d",&x,&y,&z); int max = mmax(x,mmax(y,.原创 2021-11-24 15:17:17 · 1558 阅读 · 0 评论 -
设顺序表va中的数据元素递增有序。先实现将x插入到顺序表的适当位置上,保存该表的有序性。
设顺序表va中的数据元素递增有序。先实现将x插入到顺序表的适当位置上,保存该表的有序性。/*设顺序表va中的数据元素递增有序。先实现将x插入到顺序表的适当位置上,保存该表的有序性。 */#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#include <stdio.h>typedef struct{ int *elem;//存储空间的基址 int length;//当前长度 int listsize;//当前.原创 2021-11-26 22:11:47 · 2260 阅读 · 1 评论 -
有A,B两个顺序表,a,b分别为A,B中除去最大共同前缀后的子表,若a==b==NULL,则A==B;若a为空,而b不为空,或者两者都不为空,且a的首元小于b的首元,则A<B;否则A>B。
有A,B两个顺序表,a,b分别为A,B中除去最大共同前缀后的子表,若a==b==NULL,则A==B;若a为空,而b不为空,或者两者都不为空,且a的首元小于b的首元,则A<B;否则A>B。写一个比较A,B大小的算法。/*有A,B两个顺序表,a,b分别为A,B中除去最大共同前缀后的子表,若a==b==NULL,则A==B;若a为空,而b不为空,或者两者都不为空,且a的首元小于b的首元,则A<B;否则A>B。写一个比较A,B大小的算法。 */#define LIST.原创 2021-11-26 22:13:26 · 546 阅读 · 0 评论 -
已知线性表中的元素以值递增有序排列,并以单链表作为存储结构。现在删除表中所有值大于mink且小于maxk的元素,并释放。
已知线性表中的元素以值递增有序排列,并以单链表作为存储结构。现在删除表中所有值大于mink且小于maxk的元素,并释放。/*已知线性表中的元素以值递增有序排列,并以单链表作为存储结构。现在删除表中所有值大于mink且小于maxk的元素,并释放。 */#include <stdio.h>#include "malloc.h"typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//线性.原创 2021-11-26 22:15:12 · 4542 阅读 · 2 评论 -
对单链表实现就地逆置
对单链表实现就地逆置/*对单链表实现就地逆置 */#include <stdio.h>#include "malloc.h"typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//线性链表类型//逆置 //先把头结点后一个结点i放在末尾,然后在之前末尾结点和当前末尾结点i之间插入结点如:1 2 3 4 -->2 3 4 1 --> 4 3 2 1 vo...原创 2021-11-27 21:59:44 · 3334 阅读 · 0 评论 -
实现顺序表的就地逆置,即利用原表的存储空间将线性表逆置。
实现顺序表的就地逆置,即利用原表的存储空间将线性表逆置。/*实现顺序表的就地逆置,即利用原表的存储空间将线性表逆置。 */#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#include <stdio.h>typedef struct{ int elem[LIST_INIT_SIZE];//存储空间的基址 int length;//当前长度 int listsize;//当前分配的存储容量 }SqList;//.原创 2021-11-27 22:02:09 · 2177 阅读 · 0 评论