数据结构考点范围缩小版.docx
- 文档编号:2790425
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:17
- 大小:974.44KB
数据结构考点范围缩小版.docx
《数据结构考点范围缩小版.docx》由会员分享,可在线阅读,更多相关《数据结构考点范围缩小版.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构考点范围缩小版
数据结构考点
第一章绪论
1.什么是数据结构?
(选择)
在应用程序中涉及到各种各样的数据,如何在计算机中组织、存储、传递数据,需要讨论它们的归类及它们之间的关系,从而建立相应的数据结构,依此实现软件功能。
综上,描述这类非数值计算问题的数学模型不是数学方程,而是树、表和图之类的数据结构。
因此从广义上讲,数据结构描述现实世界实体的数学模型及其上的操作在计算机中的表示和实现。
2.什么是算法?
(选择)
算法定义:
为了解决某类问题而规定的一个有限长的操作序列。
第二章线性表
1.线性表的定义(选择)
n(0)个数据元素的有限序列,记作(a1,…ai-1,ai,ai+1,…,an)
其中,ai是表中数据元素,n是表长度。
2.顺序表的定义(选择)
将线性表中的元素相继存放在一个连续的存储空间中。
3.用顺序表实现“交并减”(算法)
集合的“并”运算
voidUnion(SeqList&A,SeqList&B){
intn=Length(A);
intm=Length(B);
for(inti=0;i intx=GetData(B,i);//在B中取一元素 intk=Find(A,x);//在A中查找它 if(k==-1)//若未找到插入它 {Insert(A,x,n);n++;} } } 集合的“交”运算 voidIntersection(SeqList&A,SeqList&B){ intn=Length(A); intm=Length(B); inti=0; while(i 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->link=p->link;? p->link=newnode; 若将要插入的位置的节点命名为p,可简化为 q->link=p->link; p->link=q; ②删除 在单链表中删除ai结点 q=p->link; p->link=q->link; 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返回其值,并修改栈顶指针 returnOK; }//Pop 4.链栈的定义(选择) 栈的链接表示,链式栈无栈满问题,空间可扩充,插入与删除仅在栈顶处执行,链式栈的栈顶在链头,适合于多栈操作 5.链栈的压入与弹出(不考) ①压入 voidPush(LStack&S,ElemTypee) { //在栈顶之上插入元素e为新的栈顶元素 p=(LNode*)malloc(sizeof(LNode);//建新的结点 if(! p)exit (1); //存储分配失败 p->data=e; p->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分配结点空间 if(! p)exit(OVERFLOW);//存储分配失败 p->date=e; p->next=NULL; Q.rear->next=p;//修改队尾指针,插入新队尾结点 Q.rear=p; returnOK; } ②出队 StatusDeQueue_L(LinkQueue&Q,QElemType&e){ //若队列不空,则删除Q的队头元素结点,用e返回其值,并返回OK;否则返回ERROR if(Q.front==Q.rear)returnERROR;//若队列空,返回ERROR p=Q.front->next;//p指向队头元素结点? e=p->data; Q.front->next=p->next;//修改链队列头结点指针 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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 考点 范围 缩小