数据结构部分常考知识点Word文档格式.docx
- 文档编号:13645003
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:25
- 大小:44.33KB
数据结构部分常考知识点Word文档格式.docx
《数据结构部分常考知识点Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构部分常考知识点Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
栈S已经存在;
操作结果:
栈S被摧毁
ClearStack(&
栈S存在;
栈S清为空栈
StackEmpty(S):
若栈S为空栈返回TRUE,否则返回FALSE。
StackLength(S):
栈S存在;
返回S中元素的个数,即栈的长度。
GetTop(S,&
e):
栈S存在且非空;
用e返回S的栈顶元素。
Push(&
S,e):
插入元素e为新的栈顶元素。
Pop(&
删除栈顶元素且用e返回其值。
StackTraverse(S,visit()):
栈S已存在且非空;
从栈底到栈顶依次对S的每一元素调用visit()函数。
一旦visit()失败则操作失败。
插入元素的操作:
入栈
删除栈顶元素的操作:
出栈
栈的存储表示方法:
顺序存储结构和栈的链式表示。
顺序栈:
地址连续的存储单元依次存放从栈底到栈顶的数据元素,top指针指示栈顶元素在顺序栈中的位置。
top=0:
空栈
一般初始化空栈时不应限定栈的最大容量。
具体做法:
先为栈分配一个基本容量,不够再逐段扩展。
STACK_INIT_SIZE(存储空间初始化分配量)
STACKINCREEMENT(存储空间分配增量)
顺序栈的定义:
typedefstruct{
SElemType*base;
SElemType*top;
Intstacksize;
}SqStack;
Stacksize:
当前可使用的最大容量。
base:
栈底指针,base=NULL时栈结构不存在。
top:
栈顶指针,top=base表示栈空
非空栈的栈顶指针始终指向栈顶元素的下一个位置上。
栈的应用举例:
(1)、数值的转换
(2)、括号匹配的检验
(3)、行编辑程序
(4)、迷宫求解
(5)、表达式求解
(2)、括号匹配的检验:
用“期待的急迫程度”这个概念来描述
(3)、行编辑程序:
设立一个输入缓冲区
(4)、迷宫求解——穷举求解——后进先出
(5)、表达式求值:
iostream:
输入输出流。
程序编译时先对所有的预处理命令进行处理,将头文件中具体内容代替#include命令行。
命名空间namespace。
usingnamespacestd表示要用的明明空间std中的内容
单行注释用//
cin是C++系统定义的输入流对象。
>
是“提取运算符”。
类中包含两种成员:
数据成员和成员函数。
类:
将一组数据和有权调用这些数据的函数封装在一起,组成一个数据类型。
成员函数是对数据成员的操作。
类具有封装性和信息隐藏。
private(私有的)、public(公有的)
public:
既可以被本类中成员函数调用、也可以也可被类外的语句调用。
private:
私有的成员(函数或数据)只能被本类中成员函数调用。
具有“类”类型的变量称为“对象”。
对象占有实际存储空间,类型并不占用存储空间。
“.”成员运算符。
连接成员与对象。
C++程序的编写和实现:
1.用C++语言编写程序
2.对源程序进行编译
3.将目标文件进行连接
4.运行程序
数据类型:
基本数据类型、非基本数据类型、指针类型。
基本数据类型:
整型、实型、字符型、布尔类型。
非基本类型:
枚举类型、结构体类型、共享体类型、类类型、数组类型、typedef定义的类型。
整型:
短整型、整型、长整型
实型(浮点类型):
单精度、双精度、长双精度
指针和结构体可以构成表、树、栈等复杂的数据类型。
常量:
数值型常量、字符型常量。
浮点数的表示方法:
十进制小数形式、指数形式:
数符数字部分指数部分
转义字符:
‘\0’空字符、\ddd:
1~3位八进制数所代表的字符、\xhh:
1~2位十六进制所代表的字符。
字符串常量:
以双撇号扩起来的部分为字符串常量。
‘\0’:
空字符,并不属于字符串一部分,而是表示字符串结束。
字符串常量比同样的字符多占一个字节的空间。
函数的递归调用:
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
包含递归调用的函数称为递归函数。
局部变量和全局变量。
局部变量(内部变量):
在一个函数内部定义的变量称为内部变量,只在函数内部可以被调用。
形式参数也是局部变量(内部变量)
在函数声明中出现的参数名,其作用范围只在本行的括号内。
一个源文件可以包含一个或多个函数,函数内定义的变量为局部变量(内部变量),在函数之外定义的变量为全局变量或外部变量。
全局变量的作用范围:
从定义位置到本源文件结束。
如果全局变量再被函数调用之后数。
值发生改变,当再次被调用时,以最近一次改变的数值为准。
全局变量的劣势:
(1)全局变量在程序的全部执行过程中都占用存储单元,而非仅在需要时才开辟。
(2)全局变量使得程序的通用性降低,因为在执行函数时要受到外部变量的影响。
(3)使用全局变量会降低程序的清晰性。
不知道当前的全局变量到底改变没有。
(4)如果在同一源文件中全局变量与局部变量同名,则局部变量作用范围内全局变量被屏蔽,不起作用。
作用域:
文件作用域(全局的)、函数作用域(局部的)、块作用域(局部的)、函数原型作用域(局部的)。
变量的存储类别:
动态存储方式和静态存储方式。
变量的两个属性:
作用域(全局变量和局部变量)和存储期(动态存储和静态存储)。
存储期:
变量在内存中的存在期间(时间角度考虑)。
静态存储方式:
程序运行期间系统对变量分配固定的存储空间。
动态存储方式:
程序运行期间,系统对变量动态分配存储空间。
内存:
程序区、静态存储区、动态存储区。
全局变量全部存在静态存储区。
等程序结束释放全局变量。
动态存储区存储的数据:
1、函数形参2、函数中的自动变量(未加static)的局部变量3、函数调用时的现场保护和返回地址等。
存储方式:
静态存储和动态存储。
具体包括:
自动的(auto)、静态的(static)、寄存器的(register)和外部的(extern)
自动变量:
函数中局部变量,不使用关键字static加以说明,包括函数的形参和函数中自定义的变量。
表示存储类型的auto可以省略。
静态局部变量:
希望函数中定义的局部变量在函数调用结束之后不消失而保留原值,占用存储单元不释放,下一次该函数调用时,在上一次保留的值的基础上继续运行。
静态局部变量赋初值实在编译阶段,只赋值一次。
如果定义静态局部变量时不赋值,编译系统自动赋值0(数值型变量)或空指针(字符型变量)。
静态局部变量对于其它函数不能引用。
用register声明起存期变量:
寄存器变量:
局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出进行运算。
extern声明外部变量(全局变量):
全局变量(外部变量)是在函数之外定义的变量,作用域是从变量的定义到本程序文件的结束。
编译时将全局变量分配在静态存储区。
extern声明全局变量,以扩展全局变量的作用域:
如果在定义点之前的函数想引用定义的全局变量,则必须在引用之前用关键字extern对该变量做外部变量声明,表示该变量是一个将在下面定义的全局变量。
这种声明叫提前引用声明。
2.在多文件的程序中声明外部变量
一个C++程序可以由一个或多个源程序文件组成。
对于多源文件的形式,想在一个文件中引用另一个文件中已定义的外部变量正确的做法:
在任一个文件中定义外部变量,在另一个源文件中对外部变量用extern的外部声明。
extern扩展了外部变量的作用域,但是执行一个文件中函数时,可能会改变全局变量的值,从而会影响另一文件中的函数执行结果。
用static声明的静态外部变量:
希望某些外部变量只限于被本文件引用,而不能被其它文件引用。
只用与本文件的外部变量(局部变量)称为静态外部变量。
注意:
不要误认为用static声明的外部变量才采用静态存储方式(存放在静态存储区),不加static的是动态存储(存放在动态存储区)。
加extern或不加extern的外部变量都用静态存储方式,只是作用范围不同,都是编译时分配内存。
变量属性小结:
(1)存储类别:
auto、static、register、extern
(2)作用域:
全局变量、局部变量
(3)存储器:
静态存储、动态存储
auto、static、register只能用于变量的定义。
extern只能用于声明已定义的外部变量,而不能用于变量的定义。
局部变量:
自动变量(动态局部变量)、静态局部变量、寄存器变量、形式参数(可以定义为自动变量、寄存器变量)
全局变量:
静态外部变量(只限于本源文件)、外部变量(非静态外部变量,允许其它文件引用)
存储器:
动态存储、静态存储。
静态存储:
程序整个运行时间都存在、动态存储:
在调用函数时分配单元。
动态存储:
自动变量、寄存器变量、形式参数
静态局部变量、静态外部变量、外部变量
变量值存放位置:
内存中静态存储区:
动态存储区:
自动变量和形式参数
CPU中寄存器:
寄存器变量
预处理命令:
(1)宏定义
(2)文件包含
(3)条件编译
预处理指令以#开头。
宏定义:
#define命令将一个指定的标识符(宏名)来代表一个字符串。
#define标识符字符串
还可以用#define命令来定义带参数的宏定义
#define宏名(参数表)字符串
文件包含处理
include命令的两种形式:
#include<
文件名>
或#include“文件名”
条件编译:
有时希望程序中某一部分只在满足一定条件下进行编译,也就是指定对程序中的一部分内容进行编译的条件,如果不满足这个条件就不便宜这部分内容。
(1)#ifdef标识符
程序段1
#else
程序段2
#endif
(2)#ifndef标识符
(3)#if表达式
程序段1
#else
程序段2
数组的初始化用“{}”来实现
除了单链表之外,还存在循环链表和双向链表。
循环链表:
单链表最后一个节点的指针指向头节点。
将两个线性表合并为一个表时,设一个表为real1表示,另一个表为real2表示。
合并的过程只需要5条语句。
p=rear1->
next;
q=rear2->
rear1->
next=q->
rear2->
next=p;
free(p);
voidLINSERT(LINKLIST*rear,DATATYPE2x)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 部分 知识点