
Data Structure
佰无一用是书生
这个作者很懒,什么都没留下…
展开
-
c语言项目实战之排序
基本排序算法:希尔排序、快速排序、选择排序、堆排序#include<stdio.h>#include<string.h>#define maxsize 100001//希尔,快速,选择,堆 struct node{ int num; int count;}; struct node s[maxsize];void swap(struct node ...原创 2019-05-07 09:39:34 · 198 阅读 · 0 评论 -
逆置链表(C语言)栈和头插法
本题的要求就是采用顺序栈来进行逆置输出单链表中的所有元素。解:原创 2019-03-07 21:23:50 · 785 阅读 · 0 评论 -
双链表例题
1.在带头结点的双链表中的第一个值为X的节点之前插入元素值为y的节点(假设双链表中不存在两个至于相同的节点)。算法:先从第一个有数据的节点开始遍历双链表,找到元素为x的节点之后在该节点之前进行插入操作;如果没有这个节点则向主调函数返回没有找到节点。//在值域为x的节点之前插入值域为y的节点 void special_insert(Dlinklist **head, int x, int y) ...原创 2019-02-19 15:27:41 · 2095 阅读 · 1 评论 -
(PTA)链式表的按序号查找
本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNod...原创 2019-02-16 19:17:46 · 690 阅读 · 1 评论 -
(PTA)求链式表的表长
本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode {ElementType Data;PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数Length要返回链式表的长...原创 2019-02-16 19:15:49 · 681 阅读 · 0 评论 -
图的创建之邻接表法(C语言描述)
邻接表,G【N】为指针数组,每个指针对应矩阵每行一个链表,只存非零元素。如下图,第一行就表示的是从0-1,从0-3,如果我们说的是无向图的话,那么一条边会被存储两次...原创 2019-07-17 11:53:15 · 2841 阅读 · 0 评论 -
图的创建方法详解之邻接矩阵法(C语言)
在考试的时候有的同学可能遇到这样的问题,请使用邻接矩阵法建立一个图。相信大家的思路很多,那么下来小编介绍一种自己建立图的方法:先输入顶点数和边数,然后建立有顶点没有边的图,之后将邻接矩阵进行初始化,最后读入所有的边,这样就完成了图的建立。代码如下:typedef struct{ VertexType vexs[MAXVEX]; /* 顶点表 */ EdgeType arc[MAXVEX][...原创 2019-07-16 16:00:07 · 2125 阅读 · 0 评论 -
详解散列表(哈希表)原理
场景:在我们编写基本的C语言代码的时候,比如我们需要输入一个变量,然后对变量进行操作,最后返回一个结果,那么在我们对变量进行操作的时候,我们的编译器就会对你的变量进行检查,他会看你的变量是否定义、定义格式是否正确等。这里就会存在查找问题,如果我们采用二叉查找树等查找树来进行查找的话会发现由于需要使树保持平衡,我们会多花很多额外的功夫,导致查找效率低下,此时,哈希表就应运而生。所以我们说哈希表可以用...原创 2019-07-18 14:13:25 · 347 阅读 · 0 评论 -
单链表及双链表学习心得
注意注意注意:本文仅是作者对本人学习过程中的一些知识点的总结,不一定全面,仅供参考。1.刚开始想不通链表操作原理的时候动手画画图,很快就可以理解指针到底在节点之前怎么发挥他的作用。2.如果要对链表进行修改(比如插入,删除等等)那么在传值的时候要在结构指针的基础上再加一个指针,类似于这样creat_list(LinkList **head),其中,LinkList为结构体声明,LinkList*...原创 2019-02-19 13:53:29 · 3197 阅读 · 0 评论 -
详解顺序表及其相关操作(C语言)
(一).顺序表的定义首先设置maxsize为一个整形常量,maxsize为线性表的最大元素个数。在定义顺序表的储存类型的时候需要定义一个数组来储存线性表中所有元素和定义一个整形变量来储存线性表的长度。例程如下:(二).顺序表相关操作1.初始化顺序表:构造一个空的顺序表L实际只需要将顺序表的长度设置为0即可,本算法时间复杂度为O(1)。2.求顺序表指定位置上元素值:用e返回顺序表L中第i...原创 2019-02-13 17:50:23 · 1651 阅读 · 0 评论 -
数据结构之二叉树的先序后序中序遍历比较(C语言描述)
1.二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有节点,使每个节点被且仅被访问一次。访问,小编主要是对节点信息进行了打印当然你可以根据具体情况来选择你需要的操作。遍历次序有先序遍历(前序遍历)指先遍历根节点,然后遍历左子树,最后遍历右子树;中序遍历指先遍历左子树,然后遍历根节点,最后遍历右子树;后序遍历指先遍历左子树,然后遍历右子树,最后遍历根节点;层序遍历指从上到下,从左到右,...原创 2019-01-26 00:41:28 · 2113 阅读 · 1 评论 -
迷宫问题(上)之堆栈详解(C语言描述)
迷宫问题,顾名思义就是求出从入口到出口的路径。正常情况下,我们的想法都是采用“穷举求解”的方法,即从迷宫入口出发,顺着某一方向向前试探,若能走通则继续向前走;否则就沿着原路返回,换一个方向再继续进行试探,直到所有可能的路径均被试探完。为了保证我们可以沿着原路返回(回溯),我们可以选用栈这个先入后出的数据结构来保存从入口到当前位置的路径。首先我们建立了这样一个8*8的迷宫,为了在一会儿计算方位的时...原创 2019-02-12 14:39:00 · 1184 阅读 · 0 评论 -
树的基本知识、性质及专有名词释义
(一).树的定义 :树是由n(n>=0)个节点(元素)组成的有限集合(记为T)。其中,如果n = 0,他就是一颗空树,这是树的特例;如果n > 0,这n个节点中存在(有仅存在)一个节点作为树的根节点,简称为根节点,其余节点可分为m(m >= 0)个互不相交的有限集T1,T2,T3…Tm,其中每一个子集本身又是一颗符合本定义的树,更为根节点的子树。树的定义是递归的,因为在树的定义...原创 2019-02-28 14:49:52 · 1709 阅读 · 0 评论 -
双链表的基本操作
首先,双链表的结构声明如下:一个前驱节点的指针,一个后继节点的指针和数据域。typedef struct node{ int data; struct node *prior; //前驱节点 struct node *next; //后继节点 }Dlinklist;1.头插法建表:与建立一个单链表的方法相似,从一个空表开始,向数据域读取数据,生成新的节点,将数据放到数据域内,然...原创 2019-02-18 22:37:57 · 2390 阅读 · 0 评论 -
C语言实现:希尔排序、插入排序、归并排序、堆排序详解
由于算法的设计,导致自定义排序函数没有问题,但是在输出的时候,对于下标的选择要仔细,否则结果会发生错误。(四)插入排序第一类:直接插入排序算法:讲一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。它的原理类似于我们的扑克牌摸牌再将牌插入到一个合适的位置的操作类似,如果我们整理手中扑克牌的顺序是从小到大整理,现在我们开始摸牌,第一张是5,在摸一张牌我们发现是8,那按照我们的...原创 2019-02-22 19:13:33 · 555 阅读 · 0 评论 -
单链表的基本操作及各操作对应典题
在单链表中,我们假定每一个节点(结构体)用Linklist表示,一个节点包含一个储存元素的数据域(用名字为data的一维数组表示)和储存后继元素位置的指针域(用next表示)。节点声明如下typedef struct node{ int data[maxsize]; //数据域 struct node *next; //指针域指向后继结点 }Linklist; //节点 ...原创 2019-02-16 16:18:47 · 718 阅读 · 0 评论 -
数据结构之链栈基本操作的实现详解(C语言描述)
1.链栈:就是栈的链式存储结构,简称链栈。2.首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操作,而且单链表也存在头指针,栈也存在栈顶指针,那么我们能不能想办法让这二者合为一体呢,答案是肯定的。我们直接将栈顶放在单链表的头部,因此单链表中常用的头指针自然也就失去了意义,通常对链栈来讲是不需要头结点的。对于链栈来讲基本很少出现栈满的情况(除非内存已经被沾满 ),如果这种事情真的...原创 2019-02-01 21:44:31 · 29838 阅读 · 12 评论 -
详解数据结构之顺序栈的基本操作(C语言描述)
1.栈是线性表的特例,因此栈的顺序存储其实也就是线性表顺序存储的简化,我们称之为顺序栈,线性表是采用数组来实现的,因此顺序栈也采用数组来实现。2.栈的结构定义:elementype类型根据实际情况而定,这里假设为int类型,栈的结构体定义为一个用来储存数据的数组和一个用来表示栈顶位置的栈顶指针,用typedef将整个结构体命名为myStack。顺序栈中top的指示情况以及栈的各种操作时栈顶指...原创 2019-01-25 15:46:08 · 22231 阅读 · 13 评论