
数据结构
关关雎鸠儿
学而不思则罔,思而不学则die
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构(4):顺序栈的基本操作
#include<stdio.h>#include<stdlib.h>#define SElemType int#define Status int#define STACK_INIT_SIZE 100//初始分配量#define STACKINCREAMENCE 10//分配增量#define OK 0#define OVERFLOW -1#define ...原创 2019-08-13 16:50:54 · 211 阅读 · 0 评论 -
数据结构(3):一元多项式的基本操作
#include<stdio.h>#include<stdlib.h>#define Status int#define OVERFLOW -1#define ERROR -2#define OK 1typedef struct { // 项的表示 float coef; // 系数 int expn; ...原创 2019-08-12 21:56:14 · 410 阅读 · 1 评论 -
数据结构第二章:线性表
线性结构的基本特征:线性结构是一个数据元素的有序(次序)集 1.集合中必存在唯一的一个“第一元素”2.集合中必存在唯一的一个 “最后元素”3.除最后元素在外,均有 唯一的后继4.除第一元素之外,均有 唯一的前驱一、线性表的基本概念线性表L是n(n≥0)个具有相同属性的数据元素a1,a2,a3,…,an组成的有限序列,其中序列中元素的个数n称为线性表的长度。当n=0时称为空表,即...原创 2019-08-12 21:59:43 · 2178 阅读 · 0 评论 -
数据结构(16):三元组顺序表稀疏矩阵
程序代码://三元组顺序表稀疏矩阵#include<stdio.h>#define MAXSIZE 12500#define ElemType int#define Status int#define OK 1typedef struct{ int i, j;//该非零元的行下标和列下标 ElemType e;// 该非零元的值}Triple;// 三元组类型ty...原创 2019-08-29 19:27:22 · 863 阅读 · 0 评论 -
数据结构(15):数组的实现
程序代码:#include <stdio.h>#include <stdlib.h>#include <stdarg.h> //标准头文件,提供宏va_start、va_arg和va_end用于存取变长参数表#define MAX_ARRAY_DIM 8 //假设数组维数最大值为8typedef struct{ int *base; //...原创 2019-08-29 16:42:09 · 243 阅读 · 0 评论 -
数据结构(17):行逻辑链接存储稀疏矩阵
行逻辑链接示意图:原创 2019-08-30 11:29:39 · 851 阅读 · 0 评论 -
数据结构第五章:数组和广义表
之前的线性结构的数据构成特点:线性表的数据构成:原子类型数据对象栈和队列的数据构成:原子类型的数据对象串的数据构成:字符实际上,线性结构可以包含更广泛的数据类型:可以是原子类型的数据对象;可以是结构类型的数据对象;可以是混合类型的数据—广义表1 数组的类型定义1.一维数组一维数组可看成是一个线性表或一个向量,存储在一块连续的存储单元中,适合于随机查找。一维数组记为A[n...原创 2019-08-30 15:40:12 · 6335 阅读 · 4 评论 -
数据结构(18):二叉树的二叉链表表示
程序代码:#include<iostream>using namespace std;#define TElemType char//二叉链表typedef struct BiNode{ TElemType data; struct BiNode *lchild, *rchild;}BiTNode, *BiTree;//建立二叉链表void CreateBiTre...原创 2019-08-31 19:09:27 · 548 阅读 · 0 评论 -
数据结构(19):二叉树的三叉链表表示
程序代码:/*#include<iostream>using namespace std;#define TElemType char//二叉链表typedef struct BiNode{ TElemType data; struct BiNode *lchild, *rchild;}BiTNode, *BiTree;//建立二叉链表void CreateBiT...转载 2019-09-01 15:27:18 · 2496 阅读 · 0 评论 -
数据结构(20):二叉树的中序线索二叉树
程序代码://线索中序遍历#include<stdio.h>#include<stdlib.h>#define TElemType char#define Status int#define OK 1#define ERROR 0typedef enum{Link, Thread}PointerTag;typedef struct BiThrNode{ ...原创 2019-09-01 17:36:33 · 377 阅读 · 0 评论 -
数据结构第六章:树和二叉树
从数据元素的组织关系上看:树是一种层次结构,习惯上这种层次结构是从上向下的顺序树形结构是一对多关系!即,一个数据元素有多个后继;如果存在上一层结构,每个数据元素仅有一个前驱。树形结构在计算机领域有着非常广泛的应用:在操作系统设计中:文件管理系统进程管理在编译程序中:语法结构分析在数据库程序中:信息的组织形式软件设计中:功能结构设计1 树的定义数据对象D:具有相同特...原创 2019-09-01 18:59:25 · 1425 阅读 · 0 评论 -
数据结构(21):树的双亲表示法
程序代码#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 20typedef char ElemType;//宏定义树结构中数据类型typedef struct Snode //结点结构{ ElemType data; int parent;}PNode;typedef struct //树结构...原创 2019-09-01 19:22:47 · 417 阅读 · 0 评论 -
数据结构(22):树的孩子链表表示法
程序代码:#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 20#define TElemType char//孩子表示法typedef struct CTNode{ int child;//链表中每个结点存储的不是数据本身,而是数据在数组中存储的位置下标 struct CTNode * next;}...原创 2019-09-01 19:33:20 · 3524 阅读 · 3 评论 -
数据结构第四章:串
4.1 串类型的定义字符串可以看作是一种特殊的线性表,字符串的数据对象约束为字符集(非数值数据)。不同的应用所处理的串的特点亦不相同。在线性表的基本操作中,大多以“单个元素”作为操作对象,而在串中则是以“串的整体”或一部分作为操作对象。串的定义:串(String)是零个或多个字符组成的有限序列。一般记为:s=′a1a2…an′ (n≥0)s是串的名字, a1a2…an是串s的值...原创 2019-08-16 11:39:52 · 937 阅读 · 0 评论 -
数据结构(14):串的块链结构实现
代码实现:/* 名称:串的块链存储表示和实现 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-27 */ #include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h> // LString.h 串的块链存储...转载 2019-08-15 16:49:49 · 1167 阅读 · 0 评论 -
数据结构(2):单链表的基本操作
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef int Status;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}*LinkList;//1.单链表...原创 2019-08-11 19:43:31 · 376 阅读 · 0 评论 -
数据结构(5):循环链表解决约瑟夫环问题
1.问题说明问题描述:编号为1,2,···,n的n个人围坐在一圆桌旁,每人持有一个正整数的密码。从第一个人开始报数,报到一个预先约定的正整数m时,停止报数,报m的人退席,下一个人又重新从1开始报数,依此重复,直至所有的人都退席。编一程序输出他们退席的编号序列。例如,设m=20,n=7,7个人的密码依次是3,1,7,2,4,8,4,则退席的人的编号依次为6,1,7,5,3,2,4。基本要求:用不...原创 2019-08-13 18:08:05 · 1432 阅读 · 0 评论 -
数据结构(6):栈的链式存储结构及其基本运算的实现
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct snode{ ElemType data; struct snode *next;}LinkSTACK;/*初始化*/void StackInitiate(LinkSTACK *head){ head->...原创 2019-08-13 18:55:19 · 290 阅读 · 0 评论 -
数据结构第一章:绪论
一、数据结构讨论的范畴电子计算机的主要用途:早期:主要用于数值计算。后来:处理逐渐扩大到非数值计算领域(能处理多种复杂的具有一定结构关系的数据)。什么是程序、软件?N.沃思(Niklaus Wirth)教授提出:程序=算法+数据结构程序设计:为计算机处理问题编制一组指令集:处理问题的策略数据结构:问题的数学模型软件=程序+文档(软件工程的观点)数值计算的程序设计问题...原创 2019-08-09 17:13:12 · 866 阅读 · 0 评论 -
数据结构(1):顺序表的基本操作
#include<stdio.h>#include<stdlib.h>//定义顺序表#define ERROR 0#define OK 1#define INFEASIBLE -1#define OVERFLOW -2#define ElemType int#define Status int#define LIST_INIT_SIZE 100#d...原创 2019-08-10 19:18:30 · 299 阅读 · 0 评论 -
数据结构(7):栈的行编辑的实现
问题描述一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。由于用户在终端上进行输入时,不能保证不出差错,因此,若在编译程序中,“每接受一个字符即存入用户数据区”的做法显然不是恰当的。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现的时候可以及时改正。例如,当用户刚刚键入的一个字符是错误的时候,可以补...原创 2019-08-13 23:08:04 · 927 阅读 · 0 评论 -
数据结构第三章:栈和队列
一、栈的定义和运算1.栈的定义栈是一种特殊的线性表,插入或删除栈元素的运算只能在表的一端进行,称运算的一端为栈顶,另一端称为栈底。特点:后进先出栈又称为“后进先出”的线性表,简称LIFO表。二、栈的应用举例1.数制转换void conversion( ) { initstack(S); scanf (“%”,N); ...原创 2019-08-13 23:33:18 · 469 阅读 · 0 评论 -
数据结构(8):栈的括号匹配的实现
问题描述假设表达式中允许包含三种括号:圆括号和方括号和大括号,其嵌套的顺序随意,即( [ ] ( ) )或者[ ( [ ] ) ]为正确格式,[(])或(()]均为不正确的格式,检验括号是否匹配的方法可用"期待的破却程度"来描述。算法的设计思想:1)凡出现左括弧,则进栈;2)凡出现右括弧,首先检查栈是否空?若栈空,则表明该“右括弧”多余否则和栈顶元素比较,若相匹配,则“左括弧出栈”...原创 2019-08-14 00:39:56 · 608 阅读 · 0 评论 -
数据结构(9):栈的数制转换的实现
问题描述编制一个满足下列要求的程序:对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。由于上述计算过程是低位到高位顺序产生八进制数的各个数位,而打印输出,一般来说应从高位到低位进行,恰好和计算过程相反。代码实现#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK ...原创 2019-08-14 00:51:38 · 586 阅读 · 0 评论 -
数据结构(10):栈的迷宫问题的实现
问题描述迷宫的描述:用一个二维数组表示一个迷宫,这个二维数组的每一个元素的上下左右以及对角线上的四个方向,这总共加起来是八个方向,其中数字0表示可以通过,数字1表示此处不通,判断给定的一个迷宫是否有出路,有出路的话,求解出走出的路线。搜索一直切换向东邻方块,若走不通则新的位置为沿着顺时针旋转找到栈顶位置的下一相邻块。测试数据左上角表示入口,右下角表示出口,若没有可走通路,那么输出“没有找到...原创 2019-08-14 13:42:25 · 266 阅读 · 0 评论 -
数据结构(11):队列的链式存储结构的实现
程序代码:#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1#define TRUE 1#define FALSE 0typedef int QElemType;typedef int Status;typedef struct Qnode{ QElemType data; st...原创 2019-08-14 14:22:02 · 223 阅读 · 0 评论 -
数据结构(12):串的顺序存储结构的实现
代码实现:#include<stdio.h>#include<stdlib.h>#include<string.h>#define ERROR 0#define OK 1#define TRUE 1#define FALSE 0#define MAX_STR_LEN 40 // 用户可在255(1个字节)以内定义最大串长 typedef ch...原创 2019-08-14 22:01:06 · 993 阅读 · 0 评论 -
数据结构(13):串的堆分配存储实现
代码实现#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#define ERROR 0typedef struct{ char *ch; //若是非空串,则按串长分配存储区;否则ch为NULL int length;}HString;typedef int S...原创 2019-08-14 23:44:41 · 1420 阅读 · 0 评论 -
数据结构(23):哈夫曼编码
题目程序代码:#include<stdlib.h>#include<stdio.h>#include<string.h>//哈夫曼树结点结构typedef struct { int weight;//结点权重 int parent, left, right;//父结点、左孩子、右孩子在数组中的位置下标}HTNode, *HuffmanTree...原创 2019-09-01 19:45:38 · 178 阅读 · 0 评论