数据结构考点范围缩小版Word格式.docx
- 文档编号:15701517
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:17
- 大小:974.44KB
数据结构考点范围缩小版Word格式.docx
《数据结构考点范围缩小版Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构考点范围缩小版Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
i++){
intx=GetData(B,i);
//在B中取一元素
intk=Find(A,x);
//在A中查找它
if(k==-1)//若未找到插入它
{Insert(A,x,n);
n++;
}
集合的“交”运算
voidIntersection(SeqList&
inti=0;
while(i<
n){
intx=GetData(A,i);
//在A中取一元素
intk=Find(B,x);
//在B中查找它
if(k==-1){Delete(A,i);
n--;
elsei++;
//未找到在A中删除它
4.链表的定义(选择)
链表是线性表的链接存储表示。
单链表是用一组地址任意的存储单元存放线性表中的数据元素。
5.单链表的结构(选择)
每个元素由结点(Node)构成,,它包括两个域:
数据域Data和指针域Link。
6.单链表的插入删除(应用)带头结点
①插入
第一种情况:
在第一个结点前插入
newnode->
link=first;
first=newnode;
第二种情况:
在链表中间插入
newnode->
link=p->
link;
p->
link=newnode;
第三种情况:
在链表末尾插入
newnode->
?
p->
若将要插入的位置的节点命名为p,可简化为
q->
link=p->
link=q;
②删除
在单链表中删除ai结点
q=p->
p->
link=q->
deleteq;
7.多项式相加(应用)给第一个多项式,第二个多项式,求和的多项式,如下图
算法:
扫描两个多项式,若都未检测完:
若当前被检测项指数相等,系数相加。
若未变成0,则将结果加到结果多项式。
若当前被检测项指数不等,将指数小者加到结果多项式。
若一个多项式已检测完,将另一个多项式剩余部分复制到结果多项式。
8.顺序表与链表的比较(选择)
基于空间的比较
存储分配的方式
顺序表的存储空间是静态分配的
链表的存储空间是动态分配的
存储密度=结点数据本身所占的存储量/结点结构所占的存储总量
顺序表的存储密度=1
链表的存储密度<
1
基于时间的比较
存取方式
顺序表可以随机存取,也可以顺序存取
链表是顺序存取的
插入/删除时移动元素个数
顺序表平均需要移动近一半元素
链表不需要移动元素,只需要修改指针
第三章栈和队列
1.栈的定义与特点(选择)
定义:
是限定仅在表尾进行插入或删除操作的线性表。
允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。
特点:
后进先出(LIFO)。
2.顺序栈的定义(选择)
栈的顺序存储结构,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,指针top指向栈顶元素在顺序栈中的下一个位置,base为栈底指针,指向栈底的位置。
3.顺序栈压入与弹出(不考)
①压入
StatusPush(SqStack&
S,SElemTypee){
//将元素e插入栈成为新的栈顶元素,要考虑上溢情况
if(S.top-S.base>
=S.stacksize){
//栈满,追加存储空间
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)sizeof(ElemType));
if(!
S.base)exit(OVERFLOW);
//存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
*S.top++=e;
//元素e插入栈顶,修改栈顶指针
returnOK;
}//Push
②弹出
StatusPop(SqStack&
S,SElemType&
e){
//若栈不空,则删除S的栈顶元素,用e返回其值并返回OK,否则返回ERROR
if(S.top==S.base)returnERROR;
//栈空,返回ERROR
e=*--S.top;
//删除栈顶元素,用e返回其值,并修改栈顶指针
}//Pop
4.链栈的定义(选择)
栈的链接表示,链式栈无栈满问题,空间可扩充,插入与删除仅在栈顶处执行,链式栈的栈顶在链头,适合于多栈操作
5.链栈的压入与弹出(不考)
voidPush(LStack&
S,ElemTypee)
{
//在栈顶之上插入元素e为新的栈顶元素
p=(LNode*)malloc(sizeof(LNode);
//建新的结点
if(!
p)exit
(1);
//存储分配失败
p->
data=e;
next=S.top;
//链接到原来的栈顶
S.top=p;
//移动栈顶指针
++S.length;
//栈的长度增1
}//Push
boolPop(LStack&
S,ElemType&
e)
{
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回TRUE;
否则返回FALSE
if(!
S.top)
returnFALSE;
else
{
e=S.top->
data;
//返回栈顶元素
q=S.top;
S.top=S.top->
next;
//修改栈顶指针
--S.length;
//栈的长度减1
deleteq;
//释放被删除的结点空间
returnTRUE;
}
}//Pop
6.栈的应用(选择)要求能与队列的应用分开
数制转换,行编辑程序,迷宫求解,表达式求值
7.队列的定义与特点(选择)
只允许在表的一端进行插入,而在另一端删除元素的线性表。
在队列中,允许插入的一端叫队尾(rear),允许删除的一端称为对头(front)。
先进先出(FIFO)。
8.链队列的定义
队列的链式表示。
链队列中,有两个分别指示队头和队尾的指针。
链式队列在进队时无队满问题,但有队空问题。
9.链队列的出队入队(不考)
①入队
StatusEnQueue_L(LinkQueue&
Q,QElemType){
//在链队列Q队尾,插入新的队尾结点
p=(QueuePtr)malloc(sizeof(QNode));
//为新元素e分配结点空间
p)exit(OVERFLOW);
date=e;
p->
next=NULL;
Q.rear->
next=p;
//修改队尾指针,插入新队尾结点
Q.rear=p;
②出队
StatusDeQueue_L(LinkQueue&
Q,QElemType&
//若队列不空,则删除Q的队头元素结点,用e返回其值,并返回OK;
否则返回ERROR
if(Q.front==Q.rear)returnERROR;
//若队列空,返回ERROR
p=Q.front->
next;
//p指向队头元素结点?
e=p->
data;
Q.front->
next=p->
//修改链队列头结点指针
if(Q.rear==p)Q.rear=Q.front;
//对于链队列只有一个元素结点的情况,要同时修改队尾指针
free(p);
returnOK;
}
10.循环队列的定义
队满时再进队将溢出,解决办法:
将顺序队列臆造为一个环状的空间,形成循环(环形)队列。
11.循环队列的出队入队(应用)要求会操作
队头、队尾指针加1,可用取模(余数)运算实现。
队头指针进1:
front=(front+1)%maxsize;
队尾指针进1:
rear=(rear+1)%maxsize;
队列初始化:
front=rear=0;
队空条件:
front==rear;
队满条件:
(rear+1)%maxsize==front;
12.队列的应用
杨辉三角
第四章字符串
1.字符串的定义(选择)
字符串是n(0)个字符的有限序列,记作S:
“c1c2c3…cn”其中,S是串名字,“c1c2c3…cn”是串值,ci是串中字符,n是串的长度。
例如,S=“TsinghuaUniversity”
2.串模式匹配
定义:
在串中寻找子串(第一个字符)在串中的位置
词汇:
在模式匹配中,子串称为模式,串称为目标。
示例:
目标T:
“Beijing”,模式P:
“jin”,匹配结果=3
①穷举的模式匹配(应用)要求能把演示过程写出来
②匹配的改进算法不需要写过程了,要知道它的复杂度O(m+n)
第五章数组与广义表
1.数组的定义(选择)
?
2.行优先存放地址计算(应用)二维三维给数组,求地址
一维数组:
LOC(i)=LOC(i-1)+l=a+i*l
二维数组:
LOC(i,j)=a+(i*m+j)*l
设数组开始存放位置LOC(0,0)=a,每个元素占用l个存储单元
三维数组:
LOC(i1,i2,i3)=a+(i1*m2*m3+i2*m3+i3)*l
各维元素个数为m1,m2,m3
N维数组:
LOC(i1,i2,…,in)=a+(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 考点 范围 缩小
![提示](https://static.bdocx.com/images/bang_tan.gif)