
数据结构(第三版)朱站立编著 上机题目
数据结构朱站立(第三版)上机题目,但是采用的是数据结构朱站立(第五版),也就是最新版本的代码,是最新版本的代码,本专栏所有源代码全部在DEV-C++5.11和VS2019这两个IDE(集成开发环境)下编译通过,没有任何错误和任何警告。
AKK188888881
这个作者很懒,什么都没留下…
展开
-
26. 1、排序算法练习 分别使用直接插入排序(课本P236-237)、直接选择排序(课本P241-242)、冒泡排序(课本P248)、快速排序(课本P249-250)算法,完成对学生信息(P36学生
1、排序算法练习分别使用直接插入排序(课本P236-237)、直接选择排序(课本P241-242)、冒泡排序(课本P248)、快速排序(课本P249-250)算法,完成对学生信息(P36学生结构体)的排序(按学号或按年龄或按成绩)。提示:注意排序关键字key。2、查找算法练习参考课本P262代码,改变main()中数据为{{710,342,45,686,6,841,686,134,686,264},10},找出所有686的位置。理解使用顺序表进行查找的过程;使用有序顺序表进行顺序查找以及二分...原创 2020-10-28 08:35:37 · 651 阅读 · 0 评论 -
25.二叉树的应用实例 算法设计:判断两棵二叉树A与B是否相似,即要么它们都为空或都只有一个根结点,要么它们的左右子树均相似。 算法思路: 1、保留之前所写二叉树头文件内容。 2、再设计判断相似算法L
25.二叉树的应用实例算法设计:判断两棵二叉树A与B是否相似,即要么它们都为空或都只有一个根结点,要么它们的左右子树均相似。算法思路:1、保留之前所写二叉树头文件内容。2、再设计判断相似算法Like(BiTreeNode *A, BiTreeNode *B),该算法功能是:若A与B相似,则函数返回1,否则返回0,具体如下:(1)若ABNULL,则A与B相似,即Like(A,B)=1;(2)若A与B有一个为NULL,另一个不为NULL,则A与B不相似,即Like(A,B)=0;(3)采用递归方法原创 2020-10-28 08:21:10 · 757 阅读 · 0 评论 -
24.P196课后习题7-20:编写求二叉树中叶结点个数的函数(提示:这是一个遍历问题)。
24.P196课后习题7-20:编写求二叉树中叶结点个数的函数(提示:这是一个遍历问题)。头文件1:BiTree.h#include<stdio.h>#include<stdlib.h>typedef char DataType;typedef struct Node{ DataType data; struct Node* leftChild; struct Node* rightChild;}BiTreeNode;void Initi原创 2020-10-28 08:18:42 · 601 阅读 · 0 评论 -
23.二叉树--上机题: (1)编写程序生成下面所示二叉树,并采用前序、中序和后续遍历算法分别对二叉树进行遍历。 (2)然后,往树中插入两个节点(7和8),并给出其后序遍历结果。 (3)P196课后习
23.二叉树–上机题:(1)编写程序生成下面所示二叉树,并采用前序、中序和后续遍历算法分别对二叉树进行遍历。(2)然后,往树中插入两个节点(7和8),并给出其后序遍历结果。(3)P196课后习题7-20:编写求二叉树中叶结点个数的函数(提示:这是一个遍历问题)。头文件1:BiTree.h#include<stdio.h>#include<stdlib.h>typedef char DataType;typedef struct Node{ DataTyp原创 2020-10-28 08:16:42 · 877 阅读 · 0 评论 -
22.完成P173例7-2 编写一个程序,首先建立如图(书 P165 图 7-10(b))所示的带头结点的二叉链存储结构二叉树, 然后打印该二叉树,最后输出分别按照前序遍历二叉树次序、中序遍历二叉树次
22.完成P173例7-2 编写一个程序,首先建立如图(书 P165 图 7-10(b))所示的带头结点的二叉链存储结构二叉树, 然后打印该二叉树,最后输出分别按照前序遍历二叉树次序、中序遍历二叉树次序和后序遍历二叉树次序访问各节点的序列信息。头文件1:BiTree.h#include<stdio.h>#include<stdlib.h>typedef char DataType;typedef struct Node{ DataType data;原创 2020-10-28 08:13:59 · 747 阅读 · 0 评论 -
21.编写一个函数实现 n^k,使用递归实现。
21.编写一个函数实现 n^k,使用递归实现。#include <stdio.h> int Function(int n, int k){ if (k == 0) return 1; if (k == 1) return n; else return n * Function(n, k - 1);}int main(){ int n, k; scanf("%d", &n);原创 2020-10-28 08:11:36 · 223 阅读 · 0 评论 -
20.P153课后习题6-13 背包问题。设有一个背包可以放入物品的重量为s,现有n件物品,重量分别为w[0],w[1],...w[n-1]。问题是能否从这n件物品中选择若干件放入此背包中使得放入的重
20.P153课后习题6-13背包问题。设有一个背包可以放入物品的重量为s,现有n件物品,重量分别为w[0],w[1],…w[n-1]。问题是能否从这n件物品中选择若干件放入此背包中使得放入的重量之和正好等于s。如果存在一种符合上述要求的选择,则称此背包问题有解;否则称此背包问题无解。试用分而治之的算法设计方法设计求解背包问题的函数。提示:此背包问题的递归定义如下(其中True表示有解,False表示无解)。#include<stdio.h>#define True 1#define原创 2020-10-28 08:10:41 · 4877 阅读 · 0 评论 -
19.编写一个函数,可以分别打印一个十进制整数的每一位。
19.编写一个函数,可以分别打印一个十进制整数的每一位。#include<stdio.h>int Print(int number){ if (number > 9) Print(number / 10); printf("%d ", number % 10); return 1;}int main(){ int n; printf("输入一个十进制数:"); scanf("%d", &n); printf("打印这个十进制数每一位的结果为:");原创 2020-10-28 08:09:37 · 990 阅读 · 0 评论 -
18.一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
18.一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?#include <stdio.h> int duck(int num){ if (num == 8) return 2; return 2 * duck(num + 1);}int main(){ int i = 1; int count = 0, bcount = 0原创 2020-10-28 08:07:43 · 2432 阅读 · 0 评论 -
17.P153课后习题6-12 设计输出如下形式数值的算法。 1 2 2 3 3 3 ... n n n ... n 要求 (1)把算法设计成递归结构的算法; (2)画出上述递归算法的调用执行过程;
17.P153课后习题6-12设计输出如下形式数值的算法。12 23 3 3…n n n … n要求(1)把算法设计成递归结构的算法;(2)画出上述递归算法的调用执行过程;(3)把算法设计成循环结构。(1)把算法设计成递归结构的算法:#include<stdio.h> void Display_Rec1(int n){ int i; if (n > 1) Display_Rec1(n - 1); for (i = 1; i <= n; i++)原创 2020-10-27 08:12:59 · 1156 阅读 · 0 评论 -
16.P113课后习题4-20:设串采用静态数组存储结构,编写函数实现串的替换Replace(S,start,T,V),即要求在主串S中,从位置start开始查找是否存在字串T。若主串S中存在字串T,
16.P113课后习题4-20:设串采用静态数组存储结构,编写函数实现串的替换Replace(S,start,T,V),即要求在主串S中,从位置start开始查找是否存在字串T。若主串S中存在字串T,则用字串V替换字串T,且函数返回1;若主串S中不存在字串T,则函数返回0。并要求设计抓函数进行测试。一个测试例子为:S=”I am a student”,T=”student”,V=”teacher”。头文件:Replace.h#include <stdio.h> #include <s原创 2020-10-27 08:08:38 · 1826 阅读 · 0 评论 -
15.P112课后习题4-14:设串采用动态数组存储结构,编写函数Compare(S,T)实现两个串的比较。要求比较结果有大于、等于和小于三种情况。对比本题和习题4-13的算法,说明串的静态数组和串的
15.P112课后习题4-14:设串采用动态数组存储结构,编写函数Compare(S,T)实现两个串的比较。要求比较结果有大于、等于和小于三种情况。对比本题和习题4-13的算法,说明串的静态数组和串的动态存储结构是否对编写串的比较算法有影响。头文件:DString.h#include<stdio.h>#include<stdlib.h> #include<string.h>typedef struct{ char* str; int maxLength;原创 2020-10-27 08:06:51 · 1338 阅读 · 1 评论 -
14.P112课后习题4-13:设串采用静态数组存储结构,编写函数Compare(S,T)实现两个串的比较。要求比较结果有大于、等于和小于三种情况。
14.P112课后习题4-13:设串采用静态数组存储结构,编写函数Compare(S,T)实现两个串的比较。要求比较结果有大于、等于和小于三种情况。头文件:SString.h#include <stdio.h> #define MaxSize 100 typedef struct{ char str[MaxSize]; int length;}String;void Initiate(String* S){ S->length = 0;}原创 2020-10-27 08:05:18 · 1686 阅读 · 0 评论 -
13.P88课后习题3-13:编程序判断一个字符序列是否是回文,要求只使用堆栈,不使用队列。
13.P88课后习题3-13:编程序判断一个字符序列是否是回文,要求只使用堆栈,不使用队列。头文件:SeqStack.h#include<stdio.h>#include<string.h>#define MaxStackSize 100typedef char DataType;typedef struct{ DataType stack[MaxStackSize]; int top;}SeqStack;void StackInitiate(SeqSt原创 2020-10-27 08:03:40 · 795 阅读 · 0 评论 -
12.完成P80例3-3 编程序判断一个字符序列是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,如字符序列“ABCDEACBA”就是回文,而字符序列“ABCDEDBAC”就不是回文。
12.完成P80例3-3 编程序判断一个字符序列是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,如字符序列“ABCDEACBA”就是回文,而字符序列“ABCDEDBAC”就不是回文。头文件1:SeqStack.h#include<stdio.h>#define MaxStackSize 100typedef char DataType;typedef struct{ DataType stack[MaxStackSize]; int top;}SeqSt原创 2020-10-27 08:02:13 · 1338 阅读 · 0 评论 -
11.P56课后习题2-18:编写算法实现单链表head的就地逆置,即要求利用原单链表的结点空间,把数据元素序列(a0,a1,...,an-1)逆置为(an-1,...,a1,a0)。
11.P56课后习题2-18:编写算法实现单链表head的就地逆置,即要求利用原单链表的结点空间,把数据元素序列(a0,a1,…,an-1)逆置为(an-1,…,a1,a0)。头文件:LinList.h#include<stdio.h>#include<stdlib.h>typedef int DataType;typedef struct Node{ DataType data; struct Node* next;}SLNode;void ListIni原创 2020-10-27 07:59:18 · 1301 阅读 · 0 评论 -
10.P56课后习题2-16:编写算法实现顺序表的就地逆置,即利用原顺序表的存储单元,把数据元素序列(a0,a1,...,an-1)逆置为(an-1,...,a1,a0)。
10.P56课后习题2-16:编写算法实现顺序表的就地逆置,即利用原顺序表的存储单元,把数据元素序列(a0,a1,…,an-1)逆置为(an-1,…,a1,a0)。头文件:SeqList.h#include<stdio.h>#define MaxSize 100typedef int DataType;typedef struct{ DataType list[MaxSize]; int size;}SeqList;void ListInitiate(SeqList*原创 2020-10-27 07:57:30 · 2838 阅读 · 0 评论 -
9.P56课后习题2-15:编写算法实现顺序表的逆置,即要求把顺序表A中的数据元素序列(a0,a1,...,an-1)逆置为(an-1,...,a1,a0),并把逆置后的数据元素存储到顺序表B中。
9.P56课后习题2-15:编写算法实现顺序表的逆置,即要求把顺序表A中的数据元素序列(a0,a1,…,an-1)逆置为(an-1,…,a1,a0),并把逆置后的数据元素存储到顺序表B中。头文件:SeqList.h#include<stdio.h>#define MaxSize 100typedef int DataType;typedef struct{ DataType list[MaxSize]; int size;}SeqList;void ListIniti原创 2020-10-27 07:54:50 · 1467 阅读 · 0 评论 -
8.改编P35例2-2,存储学生数据,要求使用单链表。
8.改编P35例2-2,存储学生数据,要求使用单链表。头文件:LinList.h#include<stdio.h>#include<stdlib.h>typedef struct Student{ long number; char name[10]; char sex[4]; int age;} StudentType;typedef StudentType DataType;typedef struct Node{ DataType data;原创 2020-10-27 07:53:08 · 175 阅读 · 0 评论 -
7.完成P45例2-3: 建立一个表,首先依次输入数据元素 1,2,3,…,10,然后删除数据元素 5,最后一次显示当前表中的数据元素。要求使用单链表。
7.完成P45例2-3:建立一个表,首先依次输入数据元素 1,2,3,…,10,然后删除数据元素 5,最后一次显示当前表中的数据元素。要求使用单链表。头文件:LinList.h#include<stdio.h>#include<stdlib.h>typedef int DataType;typedef struct Node{ DataType data; struct Node* next;}SLNode;void ListInitiate(SLNode原创 2020-10-26 13:49:17 · 954 阅读 · 0 评论 -
6.完善P35例2-2 ,增加成绩到学生信息中,并按照成绩从高到低排序后输出学生信息。
6.完善P35例2-2 ,增加成绩到学生信息中,并按照成绩从高到低排序后输出学生信息。头文件:SeqList.h#include<stdio.h>#define MaxSize 100typedef struct Student{ long number; char name[10]; char sex[3]; int age; double score;}StudentType;typedef StudentType DataType;typedef stru原创 2020-10-26 13:47:41 · 169 阅读 · 0 评论 -
5.完成课本P35例2-2: 建立一个如下表所示的学生情况表,要求先依次输入数据元素,然后依次显示当前表中的数据元素。假设该表元素个数在最坏的情况下不会超过 100 个。要求使用顺序表。 学号 姓名
5.完成课本P35例2-2:建立一个如下表所示的学生情况表,要求先依次输入数据元素,然后依次显示当前表中的数据元素。假设该表元素个数在最坏的情况下不会超过 100 个。要求使用顺序表。学号 姓名 性别 年龄20000001 张三 男 2020000002 李四 男 2120000003 王五 女 22头文件:SeqList.h#include<stdio.h>#define MaxSize 100typedef struct Student{ long number;原创 2020-10-26 13:45:25 · 742 阅读 · 0 评论 -
4.完成课本P34代码,要求完善代码,并在完善代码的基础上,在位置5前插入元素20,并输出顺序表中所有元素。
4.完成课本P34代码,要求完善代码,并在完善代码的基础上,在位置5前插入元素20,并输出顺序表中所有元素。头文件:SeqList.h#include<stdio.h>#define MaxSize 100typedef int DataType;typedef struct{ DataType list[MaxSize]; int size;}SeqList;void ListInitiate(SeqList* L){ L->size = 0;}in原创 2020-10-26 13:43:40 · 191 阅读 · 0 评论 -
3.完成swap交换函数(传值和传地址调用)。
3.完成swap交换函数(传值和传地址调用)。法一:传值调用#include<stdio.h>int Swap(int a, int b){ int temp; temp = a; a = b; b = temp; printf("交换后两数为:%d %d\n", a, b); return 1;}int main(){ int a = 5, b = 8; printf("交换前两数为:%d %d\n", a, b); Swap(a, b); return原创 2020-10-26 13:41:37 · 859 阅读 · 0 评论 -
2.自定义函数Add,求两个整型数的和。
2.自定义函数Add,求两个整型数的和。#include<stdio.h>int Add(int a, int b){ int sum; sum = a + b; return sum;}int main(){ int a = 5, b = 8; printf("sum=%d", Add(a,b)); return 0;}原创 2020-10-26 13:40:18 · 9524 阅读 · 0 评论 -
1.设计一个从两个整数类型数据中得到较大数值的函数,并设计一个主函数调用此函数。
1.设计一个从两个整数类型数据中得到较大数值的函数,并设计一个主函数调用此函数。#include<stdio.h>int Max(int x1, int x2){ if (x1 >= x2) return x1; else return x2;}int main(){ int a = 5, b = 8, max; max = Max(a, b); printf("Max=%d", max); return 0;}...原创 2020-10-26 13:38:56 · 1798 阅读 · 0 评论