
数据结构
zstar-_
西电在读硕士生,联系邮箱:[email protected]
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构上机——希尔排序(含监视哨版本)
首先要明确一下什么是监视哨这个词很容易望文生义错误地认为是监视比较的值查阅资料才发现监视哨的意义是防止下标越界,提高速度在插入排序中,取用r[0]作为监视哨,就可以在循环中减少一次判断j>0的条件,从而提高速度而在本题之中,采取五个监视哨的目的在于希尔排序是跳跃的,最大的区间d[0]是5,所以只要防止j-5<0即可,不过还是存在bug!!网上也找不到多监视哨的希尔排序,着实烧脑。经过我半小时+的秃头思考后,发现问题在于监视哨的key值,每个监视哨都必须初始化0,当然作为R[0原创 2020-12-17 00:24:22 · 1088 阅读 · 4 评论 -
数据结构上机——双向起泡排序
相比于传统的冒泡排序双向气泡排序做了两点优化:1、利用flag标记有无数据交换,防止在数据有序的情况下再次浪费时间2、每次循环,从前往后又从后往前,每次确定一个大的一个小的,大小通吃//双向起泡排序的程序代码#include<stdio.h>#include<stdlib.h>#include<time.h>//顺序表结构类型定义typedef int datatype;typedef struct{ int key; datatype data;原创 2020-12-16 23:28:55 · 1386 阅读 · 0 评论 -
数据结构上机——分块查找
分块查找,原理上还是非常容易理解的题目也没出幺蛾子,相比于课本代码,甚至作出了优化课本代码给出了分块的起始位置,而它还给出了末尾位置具体思路是:先用二分查找,查询所在块再在块中进行顺序查找代码如下://分块查找的程序代码#include<stdio.h>//类型定义typedef int keytype;typedef struct{ keytype key; int low,high;}index;typedef struct{ keytype key;}原创 2020-12-16 22:49:07 · 657 阅读 · 2 评论 -
数据结构上机——希尔排序(无监视哨版本)
希尔排序思想不难理解,不过题目难点在于,要设计D1(5)个监视哨,为了先实现一下希尔排序算法,首先采用了课本上无监视哨的版本,因此把题目的代码稍改了一下,仅用第一个R【0】作为暂存单元。有监视哨的版本稍后更新(如果想出来的话)//希尔排序的程序代码#include<stdio.h>//顺序表结构类型定义typedef int datatype;typedef struct{ int key; datatype data;}rectype;const int N=10;vo原创 2020-12-16 22:23:31 · 444 阅读 · 0 评论 -
数据结构上机——二叉排序树的优化版本
书接上回上篇博客采用了数组记录的确不太妥当并且在层数较多时不适用这里采用了新的一种链表思路参考这篇文章//判断二叉排序树的程序代码#include<stdio.h>#include<stdlib.h>#include<malloc.h>//二叉链表的结构类型定义const int maxsize=1024;typedef int keytype;typedef struct node{ keytype key; struct node原创 2020-12-06 00:09:11 · 546 阅读 · 0 评论 -
数据结构上机——无向图邻接矩阵
//无向图邻接矩阵搜索遍历的程序代码#include<stdio.h>//图的邻接矩阵类型定义const int n=8;const int e=10;typedef char vextype;typedef int adjtype;typedef struct{ vextype vexs[n]; adjtype arcs[n][n];}graph;graph*g=new graph;void creatgraph();void dfsa(int);int visi原创 2020-12-03 20:57:27 · 1061 阅读 · 0 评论 -
数据结构上机——判断二叉排序树
//判断二叉排序树的程序代码#include<stdio.h>#include<stdlib.h>#include<malloc.h>//二叉链表的结构类型定义const int maxsize=1024;typedef int keytype;typedef struct node{ keytype key; struct node *lchild,*rchild;}bitree;bitree*creattree();void preorde原创 2020-12-03 20:54:58 · 914 阅读 · 0 评论 -
循环队列字符串入队出队
上次上机题,循环队列入队出队,给了尾指针和长度,虽然算法有些复杂,但还是比较容易能想到。不过在给朱老师验收的时候,老师竟然问了一个问题:不是数字,改成字符串行不行?一开始我以为很简单,不就是改个数据类型的事,结果打脸了,在机房搞了几小时都没整出来。没想到,仅仅这么微小的改动,难度天差地别。一行数字,用个int完全能容纳,如果是一串字符,不仅仅是char,而是字符串!C没有字符串的str类型,所以就必须用到字符串数组指针。其中有个坑我用定义*char【10】;之后char【10】=“123”,放原创 2020-11-13 22:17:50 · 1568 阅读 · 1 评论 -
西电数据结构上机题——统计二叉树结点
网上查了查,发现类似统计二叉树结点用的函数都是void打头,意味着这些算法都是不断递归,然后靠着全局计数器。然而西电这道题函数返回限定类型为int,意味着要处理递归时候的变量增加问题,着实耗费了我不少头发,哈哈!//统计结点总数及叶子结点总数的程序代码#include<stdio.h>#include<malloc.h>//二叉链表的结构类型定义const int maxsize=1024;typedef char datatype;typedef struct no原创 2020-11-12 00:06:08 · 905 阅读 · 0 评论 -
西电数据结构上机题——交换左右子树
递归思路比较简单算法暴力,不断迭代一句话说清算法思想:只要没有后代,往下交换就完事了//交换左右子树的程序代码#include<stdio.h>#include<malloc.h>//二叉链表的结构类型定义const int maxsize=1024;typedef char datatype;typedef struct node{ datatype data; struct node *lchild,*rchild;}bitree;bitree*cr原创 2020-11-11 21:59:08 · 1172 阅读 · 0 评论 -
西电数据结构上机题——对称矩阵相乘
这道题拿到是懵逼的本题最为关键的是对称矩阵相乘的算法幸好有老哥之前探索出了对称矩阵M的第i行和第j列的元素的数据存储在一维数组a中的位置k的计算公式:1、当i大于或等于j时,k = (i * (i + 1)) / 2 + j (下三角)2、当i小于j时,k = (j * (j + 1)) / 2 + i (上三角)(注意这里是整除,真的是非常Amazing,有时间可以去研究一下是怎么推出来的)链接: https://blog.csdn.net/xiezhi123456/article/deta原创 2020-11-11 21:28:47 · 3064 阅读 · 1 评论 -
西电数据结构上机题——寻找马鞍点
这题几乎花了我两个小时本来想白嫖一下网上马鞍点成果结果发现他们全是用二维数组做的然后经过思考,发现用数据结构做比用二维数组思路简单注意有个坑,输入定死是从1开始,导致我一开始检查了半天才发现。//找马鞍点程序代码#include<stdio.h>#include<malloc.h>//数组的结构类型定义const int m=3;const int n=3;typedef struct{ int A[m+1][n+1]; int max[m+1],min[原创 2020-11-11 20:43:40 · 1729 阅读 · 0 评论 -
西电数据结构上机题——删除子串
好长时间不写代码了问就是好久没上机了明天又要上机今晚赶紧肝完欠下的六道题进入正题好久没用C语言,发现C语言有个坑,字符串初始化不能和数组混淆记录一下让我花费很多时间的一个错误char temp[40] 是数组最后输出不当会导致白色方框的出现char temp[40]=""是字符串加引号会在末尾自动添加”\0”话不多说 上代码//删除子串的程序代码#include<stdio.h>#include<string.h>#include<malloc.h原创 2020-11-11 20:39:43 · 1099 阅读 · 0 评论 -
西电数据结构上机题——循环队列入队出队
循环队列入队出队,之前看到的百度文库的参考答案有误,重新写了下,经过测试没问题。//循环队列入队出队#include<stdio.h>#include<stdlib.h>#include<malloc.h>//循环队列的结构类型定义const int m=5;typedef int datatype;typedef struct{ datatype sequ[m]; int rear, quelen;}qu;void setnull(q原创 2020-09-18 20:19:23 · 1933 阅读 · 0 评论 -
西电数据结构上机题——单链表逆置(用栈实现)
单链表逆置(用栈实现)#include<stdio.h>#include<malloc.h>#include<string.h>//单链表结构类型定义typedef char datatype;typedef struct node{ datatype data; struct node *next;}linklist;void create(linklist*&);void print(linklist *);//定义顺序栈结构类型c原创 2020-09-18 20:12:17 · 2857 阅读 · 0 评论 -
西电数据结构上机题——回文数判断用栈实现
设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)我的代码 仅供参考//判字符串是否回文 #include<stdio.h>#include<malloc.h>#include<string.h>//定义单链表结构类型typedef char datatype;typedef struct node{ data原创 2020-09-18 20:10:43 · 1666 阅读 · 1 评论 -
西电数据结构上机题——分解单链表
西电数据结构的一道上机题,分解单链表,终于想清楚了,注意其中的缩短单链表的小细节。直接贴代码不细述。下面展示一些 成功运行的代码。#include<stdio.h>#include<malloc.h>typedef char datatype;typedef struct node{ datatype data; struct node *next;}linklist;void create(linklist*&);void resolve(link原创 2020-09-17 23:43:06 · 2789 阅读 · 1 评论 -
(C语言数据结构)合并单链表
初学数据结构,第一次写博文,算是技术日记本今天遇到一个问题,把A、B两个递增的单链表合并成一个递减的单链表C结果记录如下:#include<stdio.h>#include<malloc.h>typedef int datatype;typedef struct node{ datatype data; struct node*next;}linklist;void create1(linklist*&);void create2(linklist*原创 2020-09-17 23:32:02 · 1359 阅读 · 0 评论