数据结构
huanhuan59
这个作者很懒,什么都没留下…
展开
-
数据结构--链表(单链表)的创建及C语言实现
1.逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着。恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为线性表的链式存储。由于分散存储,为了能够体现出数据元素之间的逻辑关系,每个数据元素在存储的同时,要配备一个指针,用于指向它的直接后继元素,即每一个数据元素都指向下一个数据元素(最后一个指向NULL(空))。2.3.链表中存放的不是基本数据类型,需要用...原创 2018-11-22 19:12:17 · 11417 阅读 · 0 评论 -
数据结构之多维数组
1.数组,所有的程序设计语言学习之初都有它的身影。根据数组中存储的数据元素之间的逻辑关系,可以将数组分为 : 一维数组、二维数组、…、n维数组。n维数组中,维数 n 的判断依据是:根据数组中为确定元素所在位置使用的最少的下标个数。例如,二维数组中想唯一确定一个元素的位置,至少需要使用 2 个下标, a[1][1]代表二维数组中行坐标为 1,列坐标为 1 的数据元素的值。2.数组VS顺序表...原创 2018-12-09 14:53:01 · 619 阅读 · 0 评论 -
数据结构-BF算法(普通模式匹配算法)及C语言实现
1.判断两个串之间是否存在主串与子串的关系,这个过程称为串的模式匹配。在串的模式匹配过程,子串 T 通常被叫做“模式串”。2.普通的模式匹配(“BF”算法)判断两个串是否存在子串与主串的关系,最直接的算法就是拿着模式串,去和主串从头到尾一一比对,这就是“BF”算法的实现思想。将提供的模式串(例如 “abcac” )从主串的第一个字符开始,依次判断相同位置的字符是否相等,如果全部相等,则匹...原创 2018-12-06 20:55:43 · 1298 阅读 · 0 评论 -
数据结构中的字符串
1.数据结构中提到的串,即字符串,由 n 个字符组成的一个整体( n >= 0 )。这 n 个字符可以由字母、数字或者其他字符组成。例如,S = ”BEIJING” ,S 代表这个串的串名,BEIJING 是串的值。双引号不是串的值,作用只是为了将串和其他结构区分开。2.特殊的串空串:含有零个字符的串。例如:S = “”(双引号中没有任何东西),一般直接用 Ø 表示。空格串:只包含...原创 2018-12-05 19:20:06 · 2201 阅读 · 0 评论 -
数据结构实践项目之进制转换器
代码:#include<stdio.h>#include<string.h>#include<math.h>int top = -1;//栈的初始化-代表空栈void push(char *a, char elem) {//入栈 a[++top] = elem;}void pop(char *a) { if (top == -1) { ...原创 2018-11-28 19:01:09 · 812 阅读 · 1 评论 -
数据结构-栈(Stack)的概念和应用及C语言实现
1.上溢”:在栈已经存满数据元素的情况下,如果继续向栈内存入数据,栈存储就会出错。2.“下溢”:在栈内为空的状态下,如果对栈继续进行取数据的操作,就会出错。3.对于栈的两种表示方式来说,顺序栈两种情况都有可能发生;而链栈由于“随时需要,随时申请空间”的存储结构,不会出现“上溢”的情况。4.顺序栈:顺序栈的实现采用的是数组。在顺序栈中设定一个随时指向栈顶元素的变量(一般命名为 top ...原创 2018-11-27 20:25:18 · 527 阅读 · 0 评论 -
数据结构-队列-“先进先出”的数据结构
1.队列是线性表的一种,在操作数据元素时,和栈一样,有自己的规则:使用队列存取数据元素时,数据元素只能从表的一端进入队列,另一端出队列2.队列的顺序表示和实现使用顺序存储结构表示队列时,首先申请足够大的内存空间建立一个数组,除此之外,为了满足队列从队尾存入数据元素,从队头删除数据元素,还需要定义两个指针分别作为头指针和尾指针。当有数据元素进入队列时,将数据元素存放到队尾指针指向的位置,然...原创 2018-12-04 18:15:24 · 2797 阅读 · 0 评论 -
数据结构-循环链表(约瑟夫环)的建立及C语言实现
1.链表的使用,还可以把链表的两头连接,形成了一个环状链表,称为循环链表。和它名字的表意一样,只需要将表中最后一个结点的指针指向头结点,就形成了一个环。2.题意是:已知 n 个人(以编号1,2,3,…,n分别表示)围坐在一张圆桌周围,从编号为 k 的人开始顺时针报数,数到 m 的那个人出列;他的下一个人又从 1 还是顺时针开始报数,数到 m 的那个人又出列;依次重复下去,要求找到最后出列的那个...原创 2018-11-24 21:14:58 · 821 阅读 · 0 评论 -
数据结构--双向链表
1.之前接触到的链表都只有一个指针,指向直接后继,整个链表只能单方向从表头访问到表尾,这种结构的链表统称为 “单向链表”或“单链表”。如果算法中需要频繁地找某结点的前趋结点,单链表的解决方式是遍历整个链表,增加算法的时间复杂度,影响整体效率。为了快速便捷地解决这类问题,在单向链表的基础上,给各个结点额外配备一个指针变量,用于指向每个结点的直接前趋元素。这样的链表被称为“双向链表”或者“双链表”。...原创 2018-11-25 21:18:37 · 148 阅读 · 0 评论 -
顺序表(线性表的顺序存储结构)及C语言实现
1.逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构。也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间不存在空隙,这样的存储结构称为顺序存储结构。使用顺序存储结构存储的数据,第一个元素所在的地址就是这块存储空间的首地址。通过首地址,可以轻松访问到存储的所有的数据,只要首地址不丢,数据永远都能找着...原创 2018-11-14 17:13:38 · 5534 阅读 · 1 评论 -
数据结构--动态链表(单链表)的元素增删改查操作及C语言实现
1.动态链表的插入操作#include <stdio.h>#include <stdlib.h>//结构体实现自定义:typedef struct Link { int elem;//代表数据域 struct Link * next;//代表指针域,指向直接后记元素 }link;//初始化链表link * initLink();link * ini...原创 2018-11-22 21:07:55 · 2153 阅读 · 0 评论 -
数据结构-静态链表(初始化,增,删,改查)及C语言实现
1.静态链表的初始化操作//静态链表中结点的构成,静态链表的存储实现使用的是结构体数组//静态链表中每个结点既有自己的数据域又有存储下一个节点的位置(游标//使用静态链表存储(1,2,3,4,5),创建数组a[7]#include <stdio.h>#include <stdlib.h>#define maxSize 7typedef struct {...原创 2018-11-23 21:07:45 · 1704 阅读 · 0 评论 -
数据结构-矩阵压缩存储(十字链表、三元组顺序表、行逻辑链接的顺序表)
1.如果矩阵中有很多数值相同的数据元素,在存储时,可以考虑对其进行适当的压缩存储。有必要压缩存储的矩阵大致分为两大类:矩阵中含有大量的相同数值,称为特殊矩阵(例如对称矩阵和上下三角矩阵)。 矩阵中只有极少量的元素是非 0 元素,称为稀疏矩阵。2.两类矩阵压缩存储的方法:特殊矩阵中,对于相同的数据元素,只存储一个。 稀疏矩阵中,只需要存储非 0 元素。3.对称矩阵如果n阶矩阵中...原创 2018-12-09 16:51:50 · 2664 阅读 · 0 评论