数据结构上机实验
南风~古草
贵州大学软件工程专业大三,学子彦秉成。立志于笃行求是,践行人生信仰的奋斗者!
展开
-
编写程序,新建一个容量不小于50的哈希表(采用线性探测法解决冲突),随机生成30个整数插入哈希表中,整数范围在[0,1000]之间。(C语言)
编写程序,新建一个容量不小于50的哈希表(采用线性探测法解决冲突),随机生成30个整数插入哈希表中,整数范围在[0,1000]之间。(1)从键盘输入一个整数,在哈希表中查找,若找到,输出下标,否则输出“not found”。(2)输出该哈希表当前的查找成功ASL。原创 2021-11-29 16:55:10 · 1085 阅读 · 2 评论 -
编写程序,在程序中初始化一个有序整数数组;从键盘输入一个整数,在该数组中用折半查找,输出查找结果(下标)。
#include<stdio.h>int BinarySearch(int a[],int n,int num){ int high,low,mid; low=0; high=n-1; while(low<=high){ mid=(low+high)/2; if(a[mid]>num){ high=mid-1; }else if(a[mid]<num){ low=mid+1; }else{ return mid; } } r.原创 2021-11-29 15:09:58 · 1346 阅读 · 0 评论 -
数据结构上机实验六AVL树第二题
#include<stdio.h>#include<stdlib.h>#include<time.h>struct AVLNode{ int Data; int Height; struct AVLNode *Left; struct AVLNode *Right;};int getHeight(struct AVLNode *T){ if(T==NULL){ return 0; } re.原创 2021-11-22 20:07:40 · 217 阅读 · 0 评论 -
随机产生百万个整数,用该整数序列分别生成二叉排序树和AVL树。(1)输出两棵树的结点总数;(2)输出两棵树所有结点所在层次的总和;(3)计算两棵树的平均查找长度ASL(查找成功时)。(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>struct AVLNode{ int Data; int Height; int state; struct AVLNode *Left; struct AVLNode *Right;};struct stack{ struct AVLNode **data; int top; int maxS.原创 2021-11-16 16:16:01 · 1206 阅读 · 0 评论 -
编写程序,从键盘输入6个整数,逐个插入到AVL树中,在每次插入时重新平衡。根据你输入的整数序列,在草稿纸上画出该AVL树,遍历输出该树并检查结果是否正确。(C语言)
#include<stdio.h>#include<stdlib.h>struct AVLNode{ int Data; int Height; struct AVLNode *Left; struct AVLNode *Right;};int getHeight(struct AVLNode *T){ if(T==NULL){ return 0; } return T->Height;}in.原创 2021-11-15 21:28:24 · 854 阅读 · 0 评论 -
实验五 二叉树2(C语言)
、假设二叉树结点的数据为字符,即struct TreeNode {charData;struct TreeNode * Left;struct TreeNode * Right;};如果对该二叉树遍历打印,并且以#代表空树,那么可以得到一个字符串,例如下面的二叉树:(注:设二叉树的结点数据不能为字符#)先序遍历结果为:ABC##DE##F###编写程序,输入一个类似于上面先序遍历结果的字符串,根据此字符串建立二叉树。(算法可参考教材126页)验...原创 2021-11-11 18:17:52 · 559 阅读 · 3 评论 -
实验五 二叉树1(C语言)
编写程序,从键盘输入10个整数,逐个插入到二叉排序树中。根据你输入的整数序列,在草稿纸上画出该树。(1)分别用先序、中序、后序遍历该树并输出结果,检查结果是否正确。(2)输出该树的高度,检查结果是否正确。(3)输出结点总数,检查结果是否正确。(4)从树中删除一个整数,遍历该树并输出,检查结果是否正确。#include<stdio.h>#include<stdlib.h>struct TreeNode{ int Data; struct Tre原创 2021-11-09 09:35:08 · 1171 阅读 · 0 评论 -
回溯法利用栈求解迷宫问题(C语言)
#include<stdio.h>#include<stdlib.h>char a[10][21]={ "####################", "# # #", "# # #", "# # #", "# ##########", "# # # #", "# # # .原创 2021-11-02 22:04:19 · 574 阅读 · 2 评论 -
实现队列基本操作功能菜单(C语言)
实验内容编写程序,做一个菜单,用户可以通过菜单选择:1、输入一个整数并入队2、出队3、输出队列中的元素。(菜单界面类似下图)注意:入队前要判断队列是否已满;出队前要判断队列是否为空。代码:#include<stdio.h>#include<stdlib.h>struct Queue{ int *Data; int Front; int Rear; int Size; int Maxsize;...原创 2021-11-01 20:18:29 · 816 阅读 · 2 评论 -
2、栈的一种应用是检测代码中的括号是否正确匹配。编写程序,读入一个字符串,其中包含{}、[]、()三种括号,检查该字符串中的括号是否正确匹配。(C语言)
#include<stdio.h>#include<stdlib.h>struct Stack{ char *Data; int Top; int MaxSize;};struct Stack *create(int maxsize){ struct Stack *s; s=(struct Stack *)malloc(sizeof(struct Stack)); s->Data=(char *)malloc(sizeo.原创 2021-10-26 10:40:36 · 1227 阅读 · 0 评论 -
1、编写程序,从键盘输入10个数据压入栈中,然后从栈中依次弹出这些数据并输出。(C语言)
#include<stdio.h>#include<stdlib.h>struct Stack{ int *Data; int Top; int MaxSize;};struct Stack *create(int maxsize){ struct Stack *s; s=(struct Stack *)malloc(sizeof(struct Stack)); s->Data=(int *)malloc(sizeof(.原创 2021-10-26 09:42:55 · 1159 阅读 · 0 评论 -
将两个从小到大排列的链表合并为一个新链表(仍然有序排列),若遇到相同的元素,则在合并时去掉重复元素。输出合并前的两个链表,输出合并后的链表,检查合并是否成功。(C语言,终级版,原链表可有多个重复元素)
#include<stdio.h>#include<stdlib.h>#include<time.h>struct Node{ int Data; struct Node *next;};struct Node *create(){ struct Node *head; head=(struct Node *)malloc(sizeof(struct Node)); head->next=NULL; ret.原创 2021-10-19 16:10:09 · 418 阅读 · 0 评论 -
随机生成10个整数存入一个循环双向链表中,然后按序输出这些整数和逆序输出这些整数。(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>struct DNode{ int Data; struct DNode *Next; struct DNode *Previous;};struct DNode *create(){ struct DNode *head; head=malloc(sizeof(struct DNode)); head->.原创 2021-10-11 23:02:58 · 644 阅读 · 0 评论 -
随机生成100个整数存入链表,整数范围在[-100, 100]之间,输出该链表。将该链表分为两个,一个存放所有负整数,另一个存放所有非负整数,输出这两个链表。(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>struct Node{ int Data; struct Node *Next;};struct Node *create(){ struct Node *head; head=malloc(sizeof(struct Node)); head->Next=NULL; return head;}voi.原创 2021-10-11 22:05:46 · 389 阅读 · 0 评论 -
将两个从小到大排列的链表合并为一个新链表(仍然有序排列),若遇到相同的元素,则在合并时去掉重复元素。输出合并前的两个链表,输出合并后的链表,检查合并是否成功。(C语言,两个原链表本身分别无重复元素)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};struct Node *create(){ struct Node *head; head=malloc(sizeof(struct Node)); head->Next=NULL; return head;}void Sq_insert(struct Node.原创 2021-10-11 21:42:41 · 586 阅读 · 0 评论 -
将两个从小到大排列的链表合并为一个新链表(仍然有序排列),输出合并前的两个链表,输出合并后的链表,检查合并是否成功。(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>struct Node{ int Data; struct Node *Next;};struct Node *create(){ struct Node *head; head=malloc(sizeof(struct Node)); head->Next=NULL; return head;}voi.原创 2021-10-11 21:23:52 · 614 阅读 · 0 评论 -
随机生成100个随机整数并放入一个链表中,要求链表中的元素按从小到大顺序排列,然后输出该链表。(C语言)
随机生成100个随机整数并放入一个链表中,要求链表中的元素按从小到大顺序排列,然后输出该链表。(C语言)原创 2021-10-11 21:08:39 · 1817 阅读 · 2 评论 -
从键盘输入10个整数放入链表,要求链表中的元素与输入顺序一致,然后输出该链表。(C语言)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};struct Node *create(){ struct Node *head; head=malloc(sizeof(struct Node)); head->Next=NULL; return head;}void tail_insert(struct No.原创 2021-10-11 20:55:11 · 2154 阅读 · 0 评论