C语言数据结构期末复习(前四章)

本文介绍了数据、数据元素、数据项之间的关系,详细阐述了线性表、链表(包括头指针、首元结点和头结点)、栈与队列(顺序栈与循环队列)的定义、特点和操作,以及数组(一维、二维和n维)和广义表的概念与操作。
摘要由CSDN通过智能技术生成

绪论

数据(data)——所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )。

数据元素(data element)——是数据的基本单位,具有完整确定的实际意义(又称元素、结点,顶点、记录等)。

数据项(Data item)——构成数据元素的项目。是具有独立含义的最小标识单位(又称字段、域、属性 等)。

三者之间的关系:数据 > 数据元素 > 数据项

第一章:线性表

线性结构的定义:若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

特点① 只有一个首结点和尾结点;

特点② 除首尾结点外,其他结点只有一个直接前驱和一个直接后继。

线性结构包括:线性表、堆栈、队列、字符串、数组等

其中最典型,最常用的是------线性表

第二章:链表

头指针:指向链表中第一个结点的指针

首元结点:链表中存储第一个元素的节点

头结点:在链表的首元结点之前附设的一个结点,数据域内只放空表标志和表长等信息(此节点不计入链表长度值)

第三章:栈和队列

栈(先进后出)

定义:是仅在表尾进行插入删除操作的线性表。

表头称为栈底:base

表尾称为栈顶:top

入栈:插入元素到栈顶的操作

出栈:从栈顶删除元素的操作

顺序栈不存在的条件:S.base==NULL

顺序栈为空的条件:S.base==S.top

顺序栈满的条件:S.top-S.base==栈S的空间个数

队列(先进先出)

定义:只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(尾部插入,头部删除)

表头称为队头:front

表尾称为队尾:rear

入队:插入元素到队尾的操作

出队:从队头删除元素的操作

顺序队为空的条件:Q.rear==Q.front

顺序队满的条件:Q.rear-Q.front==队Q的空间个数

假溢出:在顺序队中,当尾指针已经到了数组的上界,不能再有入队操作,但其实数组中还有空余位置。

解决方法:采用循环队列

循环队列的新问题:在循环队列中,空队特征是front=rear;队满时的特征也是front=rear;判决条件出现二义性

解决办法

1.使用一个计数器记录队列中元素的个数

2.加设标志位,满时置1,空时置0,则可识别当前front=rear属于何种情况

3.人为浪费一个单元,则队满特征可改为front=(rear+1)%队列容量

第四章:数组和广义表

数组

定义:数组是特殊的线性表,也可以说是线性表的拓展;特殊在于:表中的元素可以是同类型的复杂结构

一维数组:表中每个元素都是同类型的单一结构

二维数组:表中的每个元素都是同类型的复杂结构(数组的数组)

构成:由一组名字相同,下标不同的变量构成

一维数组的特点:1个下标,ai 是ai+1的直接前驱

二维数组的特点:2个下表,每个元素ai,j受到两个关系(行关系和列关系)的约束

n维数组的特点:n个下标,每个元素受到n个关系约束,一个n维数组可以看成是由若干个n-1维数组组成的线性表

广义表

定义:广义表是线性表的推广,也称为列表

规定:

1.用小写字母表示原子类型,用大写字母表示列表

2.第一个元素是表头,而其余元素组成的表称为表尾

注意:任何一个非空表,表头可能是原子,也可能是列表,但表尾一定是列表

两种特殊的操作:

GetHead ( L) ——取表头(可能是原子或列表)  

初始条件:广义表L存在。  

操作结果:取广义表L的头。  

GetTail ( L ) ——取表尾(一定是列表)  

初始条件:广义表L存在。  

操作结果:取广义表L的尾。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值