
数据结构
sunshine_BUCT_LLP
我是蓝家小师妹,最喜夷陵老祖魏无羡。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
期末复习——回溯法
【1】装载问题问题描述: 有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。 输入: 多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)。n等于0标志输入结束。 输出: 对于每个测例在单独的一行内输出Yes或No。 输入样原创 2017-12-31 22:41:38 · 551 阅读 · 1 评论 -
严蔚敏版数据结构课本代码——非降序线性表(BUCT-JK1602-LLP)
/* main2-9.c 检验bo2-9.c的主程序(除输出语句外,和main2-8.c很像) */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #i原创 2017-10-22 15:45:18 · 460 阅读 · 0 评论 -
北京化工大学 程序设计实训(报告)
北京化工大学 程序设计实训(报告)题 目: 学生姓名: 学 号: 所在学院: 信息科学与技术学院 专 业: 计算机科学与技术专业 班 级: 指导教师: 2017年7月 7 日原创 2017-10-22 15:36:17 · 1668 阅读 · 2 评论 -
C语言数据结构——赫夫曼树和赫夫曼编码
1、赫夫曼树又称最优树,是一类带权路径长度最短的树。 2、从树的一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称为路径长度。树的路径长度是从树根到每个结点的路径长度之和。 3、结点的带权路径长度为从该节点到树根之间的路径长度与结点上权的乘积。树的带权路径长度为数中所有叶子结点的带权路径长度之和。 4、假设有n个权值{w1,w2,…wn},试构造一棵有n个叶子结点的原创 2017-07-05 09:56:33 · 1418 阅读 · 0 评论 -
C语言数据结构——遍历二叉树
1、二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有结点,使得每个节点被访问依次且仅被访问一次。2、前序遍历: 规则是若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树。 遍历的顺序为:1 2 4 8 5 3 6 9 10 7/*前序遍历算法*/void PreOderTraverse(BiTr原创 2017-06-04 10:53:29 · 14787 阅读 · 0 评论 -
C语言数据结构——二叉链表
链式存储结构 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。其结点结构为: 其中,data域存放某结点的数据信息;lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为原创 2017-06-03 22:15:03 · 3646 阅读 · 0 评论 -
C语言数据结构——二叉树的顺序存储结构
1、二叉树的顺序存储结构就是用一维数组存储二叉树的结点,结点的存储位置就是数组下标要能体现结点间的逻辑关系。 2、顺序存储结构一般只适用于完全二叉树。3、http://www.cnblogs.com/Alex-bg/archive/2012/08/12/2634203.html(代码原址)#include <stdio.h>#include <stdlib.h>#include <string原创 2017-06-03 20:33:26 · 17504 阅读 · 4 评论 -
C语言数据结构——二叉树
1、二叉树:是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。2、二叉树的特点: (1)每个结点最多有两棵子树,不存在度大于2的结点; (2)左子树和右子树是有顺序的,次序不能任意颠倒; (3)即使树中某个结点只有一棵子树也要区分它是左子树还是右子树。3、二叉树具有五种基本形态: (1)空二叉树;原创 2017-06-03 20:03:02 · 938 阅读 · 0 评论 -
C语言数据结构——孩子兄弟表示法
任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此,我们设置两个指针,分别指向该节点的第一个孩子和此结点的右兄弟。其中data是数据域,firstchild为指针域,储存该节点的第一个孩子的储存地址,rightsib是指针域,储存该结点的右兄弟结点的储存地址。/*树的孩子兄弟表示法结构的定义*/typedef struct CSNode{ TEle原创 2017-06-03 11:36:00 · 6523 阅读 · 2 评论 -
严蔚敏版数据结构课本代码——链表结构实现算法2.2(BUCT-JK1602-LLP)
/* algo2-13.c 采用链表结构实现算法2.2的程序,仅有4句与algo2-2.c不同 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #i原创 2017-10-22 15:47:30 · 748 阅读 · 0 评论 -
严蔚敏版数据结构课本代码——算法2.1
/* main2-8.c 检验bo2-8.c的主程序 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /* EO原创 2017-10-22 15:49:36 · 3655 阅读 · 1 评论 -
KMP字符串模式匹配算法实现
#include<stdio.h>#include<stdlib.h>#include<string.h> #define Max 100#define TRUE 1#define FALSE 0 typedef unsigned char SString[Max+1];typedef int Status;Status StrAssign(SString T,char *strs) {原创 2017-12-17 20:51:18 · 1274 阅读 · 0 评论 -
期末复习——数据结构部分
一、顺序查找 从表中的第一个(或最后一个记录)开始,逐个进行记录的关键字和给定值比较,若某个记录字与给定值相等则查找成功,找到所查找的记录。如果直到最后一个记录(或第一个记录),都没有找到给定值与记录字相等,则表中没有所查找的记录,查找不成功。/*顺序查找,a为数组,n为要查找的0数组的长度,key为关键字*/int SXSearch(int *a,int n,int key) {原创 2017-12-30 20:37:41 · 655 阅读 · 0 评论 -
折半查找
1、折半查找又称二分查找,它仅适用于有序表。 2、基本思路:在有序表中取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间的记录的关键字,则在中间记录的左半区域查找,若给定值小于中间记录的关键字,则在中间记录的右半区域查找。 3、int Binary_Search(int *a,int n,int key){ int low,high,mid;原创 2017-10-25 18:59:07 · 1046 阅读 · 0 评论 -
静态表的顺序查找(BUCT-JK1602-LLP)
Problem A: 算法9-1:静态表的顺序查找 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 388 Solved: 102 [Submit][Status][Web Board] Description用顺序表或者线性链表表示静态查找表时,搜索函数可以采用顺序查找来实现。 通常顺序查找的查找过程是从表中的自后一个记录开始,逐个将记原创 2017-10-24 22:38:32 · 3247 阅读 · 0 评论 -
顺序查找
1、基本思路:从表的一端开始,顺序扫描线性表,以此将扫描到的关键字 和给定的值K进行比较,若当前扫描到的值和给定值相等,则查找成功,返回它所在的位置,否则查找失败,返回0. 2、算法实现 (1)typedef struct{ ElemType *elem; //元素存储空间基址建表时按实际长度分配,0单元留空 int TableLen; //表长度 }SSTable;i原创 2017-10-24 22:35:41 · 570 阅读 · 0 评论 -
严蔚敏数据结构——算法2.11和2.12
/* algo2-5.c 实现算法2.11、2.12的程序 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /*原创 2017-10-24 22:05:44 · 1940 阅读 · 0 评论 -
严蔚敏数据结构——算法2.7改进
/* algo2-4.c 修改算法2.7的第一个循环语句中的条件语句为开关语句,且当 */ /* *pa=*pb时,只将两者中之一插入Lc。此操作的结果和算法2.1相同 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */原创 2017-10-22 15:56:13 · 972 阅读 · 0 评论 -
严蔚敏版数据结构课本代码——算法2.7
/* algo2-3.c 实现算法2.7的程序 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /* EOF(=原创 2017-10-22 15:54:53 · 1325 阅读 · 0 评论 -
严蔚敏版数据结构课本代码——算法2.2
/* algo2-2.c 实现算法2.2的程序 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /* EOF(=原创 2017-10-22 15:53:02 · 490 阅读 · 0 评论 -
严蔚敏版数据结构课本代码——算法2.2
/* algo2-2.c 实现算法2.2的程序 */ //#include"c1.h" /* c1.h (程序名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /* EOF(=原创 2017-10-22 15:50:33 · 1845 阅读 · 0 评论 -
C语言数据结构——孩子表示法
孩子表示法:把每个结点的孩子结点排列起来,以单链表做存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空,然后n个头指针又组成一个线性表,采用顺序存储结构,存放一个一维数组。#define MAX_TREE_SIZE 100typedef struct CTNode //孩子结点{ int child; struct CTNode *next;}*Child原创 2017-06-03 11:24:31 · 3442 阅读 · 0 评论 -
C语言数据结构——树的双亲表示法
1、树的双亲表示法: 2、/* bo6-4.c 树的双亲表存储(存储结构由c6-4.h定义)的基本操作(14个) */ Status InitTree(PTree *T) { /* 操作结果: 构造空树T */ (*T).n=0; return OK; } void DestroyTree() { /* 由于PTree是定长类型,无法销毁 */ } typedef stru原创 2017-06-03 11:10:15 · 6930 阅读 · 0 评论 -
c语言线性表顺序存储结构详解
1、 什么是顺序存储结构? 用一段地址连续的存储单元依次存储线性表的数据元素。 2、//线性表的顺序存储结构//#include<stdio.h>#include<stdlib.h>#define Max 80 //存储空间初始分配量 #define Increment 10 //存储空间分配增量typedef struct{ int *elem; // 存储空间基地原创 2017-04-24 16:31:23 · 2887 阅读 · 1 评论 -
数据结构——线性表基本操作
#include#include#define MAX 20#define LISTINCREMENT 10typedef struct{ int *elem; int length; int listsize;}SqList;void CreatList(SqList &L){//建立一个线性表 L.elem=(int*)malloc(MA转载 2017-04-23 22:02:44 · 618 阅读 · 0 评论 -
C语言数据结构——子串在主串中的定位函数
#include<stdio.h>#include<stdlib.h>#include<string.h> #define Max 100#define TRUE 1#define FALSE 0 typedef unsigned char SString[Max+1];typedef int Status;Status StrAssign(SString T,char *strs) {原创 2017-05-14 12:07:20 · 10316 阅读 · 1 评论 -
数据结构学习笔记——线性表
线性表(List):0个或多个数据元素的有序数列。 若有多个元素存在,则第一个元素无前驱,最后一个元素五后继,其余的元素有且仅有一个前驱和后继。 线性表的元素个数n为线性表的长度,如果n为0,则表示的是空表。 每个数据元素都有一个确定的位置,a1称为第一个数据元素,ai称为第i个数据元素,i表示的是数据元素在线性表中的位序。 线性表的基本操作: ADT List { //ADT原创 2017-04-22 21:21:29 · 573 阅读 · 0 评论 -
C语言数据结构-桟——括号的匹配检验
#include<stdlib.h> #include<stdio.h> #include<string.h> #define INIT_STACK_SIZE 20 #define STACK_INCRE_SIZE 10 typedef struct { char *base; char *top; int stackSize; }sqSta转载 2017-05-03 11:33:58 · 1059 阅读 · 0 评论 -
桟的应用——十进制转化为八进制
#include<stdio.h>#include<stdlib.h>#include<math.h>#define InitStackSize 100 //初始化分配量typedef struct SqStack{ int *base; int *top; int size; }SqStack;//初始化void InitStack(SqStack &S)原创 2017-05-02 22:13:54 · 694 阅读 · 0 评论 -
桟的应用——数制转化
#include<stdio.h>#include<stdlib.h>#include<math.h>#define InitStackSize 100 typedef struct SqStack{ int *base; //桟底 int *top; //栈顶 int stacksize; }Sqstack;//初始化桟 void InitStack转载 2017-05-02 21:06:52 · 643 阅读 · 0 评论 -
桟的链式存储结构
#include<stdio.h> #include<stdlib.h>#include<malloc.h>#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define STACK_INIT_SIZE 100 //栈初始化分配量 #define STACKINCREMENT 10 //存储空间的分配增量 typedef int SEl转载 2017-05-02 15:55:42 · 424 阅读 · 0 评论 -
桟的链式存储结构分部操作
1、桟的链式存储结构简称,链桟。链桟的空其实就是top=NULL. 2、桟的链式结构基本操作typedef int ElemType; typedef int Status;//构造一个结点typedef struct StackNode{ ElemType data; struct StackNode *next;}StackNode,*LinkStackPtr;type原创 2017-05-02 15:51:28 · 440 阅读 · 0 评论 -
C语言数据结构——串的堆分配
#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0#define OVERFLOW -1typedef int Status;typedef struct { char *ch; // 若是非空串,则按串长转载 2017-05-15 11:20:21 · 1257 阅读 · 0 评论 -
C语言数据结构——栈、行编辑程序
/*顺序栈头文件:SeqStack.h*/ #include <stdio.h> #include <stdlib.h> #define STACKSIZE 100 typedef char DataType; typedef struct { DataType stack[STACKSIZE]; int top; }SeqStack; voi转载 2017-05-06 20:22:39 · 2598 阅读 · 0 评论 -
C语言数据结构——树的定义
树是n个结点的有限集。n等于0是称为空树,在任意一棵非空树中,有且仅有 一个特定的称为根的结;当n>1时,其余节点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树。树的结点包含一个数据元素和n个指向其子树的分支。结点拥有的子树数称为结点的度。度为0的结点称为叶结点或终端结点;度不为0的点称为非终端结点或分支结点。除根节点之外,分支结点也称为内部节点。树的度是树内各原创 2017-06-02 17:19:09 · 3630 阅读 · 0 评论 -
C语言数据结构——稀疏矩阵的快速转置
#include<stdio.h>#include<stdlib.h>#include<stdarg.h>#define OK 1#define MAXSIZE 12500typedef int Status;typedef struct{ int i; int j; int e;}Triple;typedef struct{ int mu; in原创 2017-05-20 19:55:25 · 2760 阅读 · 0 评论 -
C语言数据结构——稀疏矩阵的转置
#include<stdio.h>#include<stdlib.h>#include<stdarg.h>#define OK 1#define MAXSIZE 12500typedef int Status;typedef struct { int i,j; int e;}Triple;typedef struct{ Triple data[MAXSIZE+1]原创 2017-05-20 19:53:49 · 1755 阅读 · 0 评论 -
C语言数据结构——矩阵的加减乘除
#include<stdio.h>//#include<iostream.h>#include<stdlib.h>#include<conio.h>#include<malloc.h>#define MAXSIZE 100 /*假设非零元个数的最大值为100*/typedef struct{int i,j; /*该非零元的行下标和列下标*/ int v;}Tr转载 2017-05-20 18:33:32 · 4052 阅读 · 1 评论 -
C语言数据结构——数组顺序存储结构的实现和表示
#include<stdarg.h>#include<malloc.h> /* malloc()等 */#include<stdio.h> /* EOF(=^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() *///#转载 2017-05-20 16:23:02 · 4746 阅读 · 0 评论 -
C语言数据结构——串的定长顺序存储结构
#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0#define OVERLOW -1 #define MAX_STR_LEN 40 // 用户可在255(1个字节)以内定义最大串长转载 2017-05-09 20:44:29 · 5213 阅读 · 1 评论