数据结构实验
timeㄨ 若情
软件工程学生
展开
-
数据结构算法—递归实现折半查找算法
数据结构算法—递归实现折半查找算法算法思想:折半查找 适用于 有序表。 这个难度不大,注释也没写多少,有疑问私信我就行!有序表的存储结构typedef struct{ int a[30]; int length; }sqtable; 有序表的创建sqtable st;int b=0;void createst(int k){ int i; printf("Please input data:"); st.a[0]=-100; // 哨兵。 for (i=1;(!b&原创 2021-12-16 15:00:08 · 3136 阅读 · 1 评论 -
数据结构算法—在二叉排序树中递归查找key
数据结构算法—在二叉排序树中查找key题目:编写程序实现下面运算:在二叉排序树中查找关键字为key的记录。查找算法思想:二叉排序树的构造,根据 插入的key的值,决定是左孩子还是右孩子。查找的过程,就是一个 遍历二叉树的 过程。 查找的key值,比 当前结点的值大,就深入下一层的右孩子, 比当前结点的值小,就深入下一层的左孩子。二叉排序树 存储结构:typedef struct node{ int info; // 值 struct node *lchild,*rchild; //原创 2021-12-16 14:54:28 · 4369 阅读 · 1 评论 -
数据结构算法—邻接表存储有向图求两点间是否存在路径
数据结构算法—邻接表存储有向图求两点间是否存在路径题目:试基于图的深度优先搜索策略编写一程序,判别以邻接表方式存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i≠j)。邻接表存储结构typedef struct ArcNode{ int adjvex;//边指向的顶点 struct ArcNode *nextarc; // 下一条边的指针 }ArcNode;typedef struct VNode{ int data;//顶点信息 ArcNode *fristarc;//该结点的第一条原创 2021-12-16 14:39:15 · 6486 阅读 · 2 评论 -
数据结构算法—邻接表存储的无向图求连通分量个数
数据结构算法—邻接表存储的无向图求连通分量个数邻接表存储结构typedef struct ArcNode{ int adjvex;//边指向的顶点 struct ArcNode *nextarc; // 下一条边的指针 }ArcNode;typedef struct VNode{ int data;//顶点信息 ArcNode *fristarc;//该结点的第一条边 }VNode,AdjList[MAX];typedef struct { AdjList vertices;//头结原创 2021-12-16 11:05:23 · 6885 阅读 · 4 评论 -
数据结构算法—非递归求二叉树中位于先序序列中第K个位置的结点(C语言)
数据结构—非递归求二叉树中位于先序序列中第K个位置的结点(C语言)学过数据结构中 队列和栈的同学,应该都明白: 使用队列和栈,可以将递归算法转换成非递归算法在递归算法中,需要重复调用函数时,在非递归算法中,就需要入栈,进入下一层。在递归算法中,返回调用函数的结果时,在非递归算法中,就需要出栈,返回到上一层#include<stdio.h>#include<malloc.h> struct node{ char info; struct node *llink,*rli原创 2021-12-05 12:37:23 · 1077 阅读 · 3 评论 -
数据结构算法—非递归算法求二叉树的叶子结点(C语言)
数据结构—非递归算法求二叉树的叶子结点(C语言)学过数据结构中 队列和栈的同学,应该都明白: 使用队列和栈,可以将递归算法转换成非递归算法在递归算法中,需要重复调用函数时,在非递归算法中,就需要入栈,进入下一层。在递归算法中,返回调用函数的结果时,在非递归算法中,就需要出栈,返回到上一层#include<stdio.h>#include<malloc.h>struct node{ char info; struct node *llink,*rlink;};typ原创 2021-12-05 12:34:26 · 4675 阅读 · 2 评论 -
数据结构算法—递归算法求二叉树中位于先序序列中第K个位置的结点(C语言)
数据结构—递归算法求二叉树中位于先序序列中第K个位置的结点(C语言)该算法依旧需要遍历二叉树,只是需要添加一个计数器 i,当 i == k 时,遍历结束,返回info#include<stdio.h>#include<malloc.h> struct node{ char info; struct node *llink,*rlink; };typedef struct node NODE;NODE *creat(){ char x; NODE *p;原创 2021-12-05 12:29:50 · 1567 阅读 · 0 评论 -
数据结构算法—递归算法求二叉树的叶子结点(C语言)
数据结构—递归算法求二叉树的叶子结点(C语言)遍历过程采用先序序列。在构造二叉树时,直接输入二叉树的先序序列,我在注释中有例子。#include<stdio.h>#include<malloc.h>struct node{ char info; struct node *llink,*rlink;};typedef struct node NODE;NODE *creat(){ char x; NODE *p; scanf("%c",&x);原创 2021-12-05 12:26:09 · 7027 阅读 · 3 评论 -
数据结构算法题:约瑟夫环问题(循环链表解决)
数据结构设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到m的人又出列,如此重复,直到所有的人全部出列为止。Josephus问题是:对于任意给定的n,m,s,求出按出列次序得到的n个人员的顺序表。思路:从 1 到 n 构成一个循环链表。找到开始报数的结点p 。依次报数,数到m的结点,输出data值,并更新为下一个结点的data值。p->next 指向 p->next->next。也就是将下一个结点提前一位,起到删除当前结点的效原创 2021-11-24 08:21:50 · 3394 阅读 · 0 评论 -
数据结构经典算法题目:单链表保存的两个多项式相加
数据结构用单链表ha 存储多项式A(x )=a0+a1x1+a2x2+…+anxn(其中aI为非零系数),用单链表hb 存储多项式B(x )=b0+b1x1+b2x2+…+bmxm(其中bj为非零系数),要求计算C(x )= A(x )+B(x ),结果存到单链表hc中。试写出程序。思路:获取A,B 两个多项式,每获取一个就建立一个结点插入到头结点之后。形成一个多项式单链表。创建头结点 C 将A,B 多项式 串联起来。 在操作过程中,一定要 将头结点C 赋值给 pc ,通过pc连接多项式。因为最后原创 2021-11-24 08:15:37 · 2642 阅读 · 0 评论 -
在一个递增的顺序表的相应位置,插入元素e,使用scanf函数依次读取数据。使用for循环中的printf函数,依次输出修改后的顺序表
数据结构算法题在一个递增的顺序表的相应位置,插入元素e,使用scanf函数依次读取数据。使用for循环中的printf函数,依次输出修改后的顺序表思路:获取递增的顺序表,通过比较大小获得元素e 应该插入的位置 i 。保存下来这个位置 ,利用for 循环,将 i 之后的元素后移一位。在 i+1 插入元素e。顺序表长度 + 1#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100 //顺序表初识分配空间大小原创 2021-11-24 08:05:58 · 231 阅读 · 0 评论