树的代码实现
第一部分
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125#include <stdio.h>#include <stdlib.h>typedef struct BiTree{ char data; struct BiTree *lchild; struct BiTree *rchild;}BiTree, *BiNode;BiNode CreatBiTree(BiNode T){ char ch; scanf("%c ...
线性表算法的实现
以下是顺序表的代码的实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124#include <stdio.h>#include<stdlib.h>#include<string.h>#define MAX 20typedef struct Sqtable{ int a[20]; int length;}Sq;void read_Sq(Sq *L){ int n = 0; int *p = L->a; FILE *f ...
线性表的使用
线性表
定义
线性表是具有相同特征的数据元素的一个有限序列
a1,a2,a3·····,ai-1,ai,ai+1,······,an
上面元素称为数据元素
a1 称为线性起点 an是线形终点,n为元素总个数,即表长
ai-1是ai的直接前趋, ai+1是ai的直接后续
当n=0时,称为空表
线性表:
由n(n>=0)个数据元素(节点)a1,a2,a3,a4····an组成的有限序列
其中数据元素的个数n定义为表的长度
当n= 0时称为空表
当非空的线性表(n>0)记作:(a1,a2····an)
这里的数据元素ai(1<=i<=n)只是一个抽象的符号,其具体含义在不同情况下可以不同
逻辑特征
在非空线性表,有且仅有一个开始节点a1,他没有直接前趋,而仅有一个直接后续a2
有且仅有一个终端节点an,他没有直接后续,而且仅有一个直接前趋an-1
其余的内部节点ai(2<=i<=n-1)都有且仅有一个直接前趋ai-1和一个直接后续ai+1
案例
一元多项式的计算
当表达式为p0 + p1x^1 + p2x^2 + p3x^3 ...
栈和队列代码实现
栈代码的实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 ...
栈和队列原理
栈和队列
定义:
栈和队列是两种常用的,重要的数据结构
栈和队列是限定插入和删除只能在表的“端点“进行的线性表
其中栈,规定再插入的时候只能插入在表尾,删除的时候也只能删除最后一个
”后进先出“ 是栈的结构特点
数值转换
表达式求值
括号匹配的检验
八皇后的问题
行编辑的程序
函数调用
迷宫求解
函数调用
迷宫求解
递归调用的实现
其中队列,规定插入的时候 只能在表尾插入,删除的时候只能在表头删除。
”先进先出“是队列的结构特点,使得队列可以解决类似排队问题的有用工具
脱机打印输出:按申请的先后顺序依次输出
多用户系统中,多个用户排成队,分时的循环使用CPU和主存
按用户优先级拍成多个队,每个优先级一个队列
实时控制系统中,信号按接受的先后顺序依次处理
网络电文传输,按照到达的时间先后顺序依次进行
栈的结构和特点
栈是一个特殊的线性表,是限定仅在一段(通常是表尾)进行插入和删除操作的线性表
又称为后进先出(Last In First Out)的线性表,简称LIFO结构
栈的相关概念
栈是仅在表尾进行插入,删除操作的线性表。表尾(即an端)称为栈顶Top;表 ...
串数组广义表
串
串:内容受限制的线性表(里面内容只能是字符串)
S = "a1a2a3·····an"(n≥0)
串名:S;
串值:“a1a2a3·····an”;
串长:n;
空串:n = 0;空集
子串:一个串中任意个连续字符组成的**子序列(含空串)**称为该串的子串
例如,“abcde”的字串有:
“”, “a”,"ab", "abc","abcd","abcde"
真子串是指不包含自身的所有子串
主串:包含子串的串相应的称为主串
字符位置:字符在序列中的序号为该字符在串中的位置
字串位置:子串第一个字符再主串中的位置
空格串:有一个或多个空格组成的串,与空串不同
例:字符串a,b,c,d
a = "BEI";
b = "JING";
c = "BEIJING";
d = "BEI JING"
它们的长度是:3,4,7,8
c的子串:a b
d的子串: ...
KMP
关于KMP算法的实现,如果转载请标明出处
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118#include <stdio.h>#include <stdlib.h>#include <string.h>#define OK 1#define ERROR 0#define status int typedef struct sstring{ char ch[50]; int length;}Sstring, *Lstring;status InitString(Lstring& ...
数据结构基本原理
数据结构
1.数据
数值型
1 2 3
非数值型
文字,图像, 图形
2.数据元素和数据项
数据元素
组成数据的基本单位就是数据元素
例如
学号
姓名
性别
出生日期
政治面貌
0001
张三
男
20020514
团员
0002
李四
男
20030604
团员
0003
王五
男
20040507
团员
每一行就是一个数据元素,或者称为记录,节点或顶点
数据项
组成数据元素的不可分割的最小单位
例如上面的表中每一列就是一个数据项
数据 >数据元素>数据项
学生表>个人纪录>学号,姓名·····
3.数据对象
是性质相同的数据元素的集合,是数据的一个子集
例如整数的数据对象是集合N={1,2,3··}
4.数据对象与数据元素
数据元素 ------ 组成数据的基本单位
与数据的关系: 是集合的个体
数据对象 ----- 性质相同的数据元素 的集合
与数据的关系是:集合的子集
5.数据结构
数据结构
数据元素不是孤立存在的,他们之间存在着某 ...