【数据结构导论】自考笔试题:伪代码练习题汇总 1

news2025/1/13 15:48:55

目录

一、开源项目推荐

二、线性表的基本运算在单链表上的实现

(1)初始化

(2)插入 p 指向的新结点的操作 

(3)删除 *p 节点

三、循环链表 

(1)在单链表中

(2)在带有头结点的循环链表中

(3)只有尾指针 rear

四、双向循环链表

(1)每个结点有两个指针

(2)带头结点的双向循环链表 L 为空的条件

(3)p 指向待删结点,删除 *p 的操作

(4)p 所指结点的后面插入一个结点 *t 的操作 

五、栈的顺序实现 

(1)下溢 / 上溢

(2)进栈

(3)出栈

(4)取栈顶元素

六、栈的链接实现

七、二叉树的性质

八、二叉树遍历的递归实现

九、图的遍历

十、4 种排序方法 



一、开源项目推荐

【我的项目】数据结构导论_伪代码练习题icon-default.png?t=N7T8https://gitcode.com/qq_39720249/data_structure/overview【项目说明】

  • 数据结构导论:自学考试笔试题中关于伪代码的练习题集合


二、线性表的基本运算在单链表上的实现

(1)初始化

① 假设单链表的类型定义如下 

typedef struct node
{ DataType data; 
  struct node *next;
}node ,*LinkList;

算法 InitiateLinkList()实现单链表的初始化

LinkList InitiateLinkList( )   // 建立一个空的单链表
{ LinkList head;                 // 头指针
  head=malloc(sizeof(node));  // 动态构建一个结点,并定义为头结点
  head->next=NULL; 
  return head;
}  
// 空表由一个头指针 head 和一个头结点组成。
// head 指向新创建的结点,即头结点。
// 一个空单链表仅有一个头结点,它的指针域为 NULL。

② 在带头结点的单链表 L 中,第一个数据元素结点的指针为 L->next。

③ 设有一个单链表,若结点的指针域为 next,则指针 p 所指的结点为最后一个结点的条件是 p->next==NULL。工作指针 p->next 为 NULL 时,说明已经走到了表的尾部,这时已完成对所有结点的访问。


(2)插入 p 指向的新结点的操作 

① 设 r 指向单链表的最后一个结点,要在最一个结点之后插入 s 所指的结点,需执行的语句序列是:
r->next=s;r=s;r->next=NULL
② 将一个由指针 q 指向的结点插在单链表中由指针 p 所指向的结点之后的操作是:
q->next=p->next;p->next=q;

(3)删除 *p 节点

在一个单链表中,已知指针 q 指向指针 p 所指结点的前驱结点,则删除 *p 结点的操作语句是:

q->next=p->next


三、循环链表 

(1)在单链表中

在单链表中,如果让最后一个结点的指针域指向第一个结点可以构成循环链表:
① 只有头指针 head:
  1. 判断 P 所指结点为尾结点的条件:p->next==head;
  2. 判断指针 P 所指结点为首结点的条件: p==rear->next->next;
  3. 判断链表是否为空的条件:head->next==head。
② 有头指针 head 和尾指针 rear(说明:rear->next 指向头结点 head)。

(2)在带有头结点的循环链表中

在带有头结点的循环链表中,尾指针为 rear,判断指针 P 所指结点为首结点的条件是:

p==rear->next->next


(3)只有尾指针 rear

① 删除表首结点的操作可表示为:
p=rear->next->next;
rear->next->next=p->next;
free(p);
② 已知尾指针的单向循环链表在第一个结点后面插入一个新结点的时间复杂度为 O(1)。


四、双向循环链表

(1)每个结点有两个指针

  1. next 指针指向直接后继结点
  2. prior 指针指向直接前驱结点

(2)带头结点的双向循环链表 L 为空的条件

(L->next==L)&&(L->prior==L)


(3)p 指向待删结点,删除 *p 的操作

p->prior->next=p->next;
p->next->prior=p->prior;
free(p);

(4)p 所指结点的后面插入一个结点 *t 的操作 

t->prior=p;
t->next=p->next;
p->next->prior=t;
p->next=t; 


五、栈的顺序实现 

(1)下溢 / 上溢

  1. 当空栈,栈顶下标值 top=0,如果此时做出栈运算,则产生“下溢”。
  2. 当栈中的数据元素已经填满了,如果再进行进桟操作,会发生“上溢”。

(2)进栈

Int Push(SeqStk *stk,DataType x) // 若栈未满,元素 x 进栈 stk 中,否则提示出错信息
{if(stk->top==maxsize-1)          // 判断找是否满
{ error(“栈已满”);return 0;}
else { stk->top++;                 // 栈未满,top 值加 1
stk->data[stk->top]=x;             // 元素 x 进桟
return 1;}}

(3)出栈

Int Pop{SeqStk *stk)
{ if(EmptyStack(stk))    // 判断是否下溢(栈空)
{ error(“下溢”);return 0;}
else                        // 未下溢,栈顶元素出栈
{ stk->top--;               // top 值减 1
return 1;}}

 也可以理解为:原栈顶的下一个结点成为新的栈顶,即 top=top->next;


(4)取栈顶元素

DataType GetTop(SeqStk*stk)     // 取栈顶数据元素,栈顶数据元素逋过参数返回
{ if(EmptyStack(stk))
return NULLData;                  // 栈空,返回 NULLData
else return stk->data[stk->top];}  // 返回栈顶数据元素


六、栈的链接实现

(1)栈的链接实现称为链栈,链栈可以用带头结点的单链表来实现。
LS 指向链表的头结点,首结点是栈顶结点,LS->next 指向栈顶结点,尾结点为栈底结点。
(2)出栈操作始终是栈顶结点出栈,即删除头结点之后的结点:
原栈顶的下一个结点成为新的栈顶,即 top=top->next;
(3)链栈由于采用了链表的方式作为存储方式,各结点通过链域的连接组成栈,由于每个结点空间都是动态分配产生,链栈不用预先考虑容量的大小。
(4)入栈时,使用 malloc 申请空间后,用指针相连接,所以节点个数没有限制;但是出栈时,如果栈中的元素个数为 0,则不能继续出栈,所以需要判断当前栈是否为空。
综上,链表不需要判满,只需要判定是否为空即可。
(5)链栈 LS 中,Ls 一>next 指向栈顶结点,则新结点 *P 入栈的操作为:
P->next=LS->next; 和  LS->next=p;。


七、二叉树的性质



八、二叉树遍历的递归实现

  • 先序遍历:访问根结点;先序遍历左子树;先序遍历右子树。
  • 中序遍历:中序遍历左子树;访问根结点;中序遍历右子树。
  • 后序遍历:后序遍历左子树;后序遍历右子树;访问根结点。


九、图的遍历



十、4 种排序方法 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot 实现微信、QQ 绑定登录

文章目录 1. 项目环境2. 创建Spring Boot项目3. 配置微信和QQ开发平台4. 配置Spring Security5. 配置Spring Security6. 创建登录和主页控制器7. 创建视图8. 运行项目9. 处理用户信息结论 🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#…

JAVA复习4

目录 44、定义 int x5; 执行 int yx; 和 xy;,x 和 y 分别为( B )。 45、下列内容描述错误的是( C )。 46、以下 Java 语句在编译时不通过的是 (A) 47、在 Java 中,Scanner 类提供控制台获取键盘输入的功…

皇河将相董事长程灯虎出席第二十四届世纪大采风并获奖

仲夏时节,西子湖畔。第二十四届世纪大采风品牌人物年度盛典于6月16日至17日在杭州东方文化园隆重举行。本届盛典由亿央网、《华夏英才》电视栏目联合多家媒体共同主办,中世采文化发展集团承办,意尔康股份有限公司、宸咏集团协办,汇聚了来自全国政、商、产、学、研、媒等各界代表…

4.1 四个子空间的正交性

一、四个子空间的正交性 如果两个向量的点积为零,则两个向量正交: v ⋅ w v T w 0 \boldsymbol v\cdot\boldsymbol w\boldsymbol v^T\boldsymbol w0 v⋅wvTw0。本章着眼于正交子空间、正交基和正交矩阵。两个子空间的中的向量,一组基中的向…

【2024最新版】Java JDK安装配置全攻略:图文详解

目录 1. 引言2. 准备工作2.1 **确定操作系统**2.2 **检查系统要求**2.3 **下载JDK安装包**3. 安装步骤(以Windows系统为例)4. 配置环境变量4.1 jdk配置验证4.2 **配置JAVA_HOME环境变量**4.3 **配置Path环境变量**4.4 验证jdk是否配置成功 5. 结语 1. 引…

MySQL命名规范(自用)

MtySQL命名规范 基本通用规范 1.【推荐】关键字必须大写 所有关键字必须大写,如:INSERT、UPDATE、DELETE、SELECT及其子句,IF……ELSE、CASE、DECLARE等 2.【强制】字段和建表必须写备注 COMMENT写备注 3.【强制】字母数字下划线 采用26个英…

CentOS 7、Debian、Ubuntu,这些是什么意思

CentOS 7、Debian、Ubuntu 都是基于 Linux 内核的操作系统,它们各自有不同的特性和用途。以下是对它们的详细解释: CentOS 7 CentOS(Community ENTerprise Operating System) 是一个基于开源的 Linux 发行版。CentOS 7 是 CentOS …

JavaScript的学习之旅之初始JS

目录 一、认识三个常见的js代码 二、js写入的第二种方式 三、js里内外部文件 一、认识三个常见的js代码 <script>//写入js位置的第一个地方// 控制浏览器弹出一个警告框alert("这是一个警告");// 在计算机页面输入一个内容&#xff08;写入body中&#xff…

支付系统的渠道路由架构设计

图解支付系统的渠道路由设计 渠道路由是引导流量路径的关键&#xff0c;其设计至关重要。本文详解渠道路由概念、必要性及形态&#xff0c;并分享一个高效实用的基于规则的渠道路由设计方案。 注&#xff1a;有些公司称渠道为通道&#xff0c;都是一个意思&#xff0c;为方便起…

(南京观海微电子)——DC-DC和LDO的原理及应用区别

LDO: 低压差线性稳压器&#xff0c;故名思意为线性的稳压器&#xff0c;仅能使用在降压应用中&#xff0c;也就是输出电压必需小于输入电压。 优点&#xff1a;稳定性好&#xff0c;负载响应快&#xff0c;输出纹波小。 缺点&#xff1a; 效率低&#xff0c;输入输出的电压…

Spring响应式编程之Reactor介绍

Reactor介绍 1、异步执行技术2、实现方式 响应式编程&#xff08;Reactive Programming&#xff09;是一种面向数据流和变化传播的编程范式。Java中的Reactor是一个用于响应式编程的库&#xff0c;它建立在Reactive Streams规范之上&#xff0c;旨在帮助开发者构建非阻塞的、高…

vue登陆密码加密,java后端解密

前端 安装crypto-js npm install crypto-js加密 //引入crypto-js import CryptoJS from crypto-js;/** ---密码加密 start--- */ const SECRET_KEY CryptoJS.enc.Utf8.parse("a15q8f6s5s1a2v3s"); const SECRET_IV CryptoJS.enc.Utf8.parse("a3c6g5h4v9sss…

项目-博客驿站测试报告

测试用例设计 功能测试 该部分主要围绕对于博客系统的增删改查, 文章通过性审核, 关注功能等进行测试, 还进行了其它一些探索性的测试. 以上是作者设计的全部用例. BUG发现: 问题1: 当多端同时操作同一篇文章BUG 环境: Windows11, Edge和Chrome浏览器 复现步骤: 1.先使用Edg…

《三国:谋定天下》成为了SLG游戏现象级的成功案例

原标题&#xff1a;《三国&#xff1a;谋定天下》引领SLG游戏新潮流&#xff0c;B站股价五个飙升了30% 易采游戏网6月23日&#xff1a;B站作为年轻人喜爱的文化社区和视频平台&#xff0c;再次用一款新的游戏证明了其在游戏发行领域的独到眼光与强大实力。最近大火的策略角色扮…

VBA学习(17):使用条件格式制作Excel聚光灯

今天给大家分享的表格小技巧是制作聚光灯。 先说一下啥是聚光灯。所谓聚光灯&#xff0c;可以简单理解为对工作表的行列填充颜色&#xff0c;突出显示被选中的单元格&#xff0c;仿佛该单元格被聚光灯照亮似的。聚光灯有助于肉眼识别所选中的单元格或区域&#xff0c;提高数据…

Repair LED lights

Repair LED lights 修理LED灯&#xff0c;现在基本用灯带&#xff0c;就是小型LED灯串联一起的 1&#xff09;拆旧灯条&#xff0c;这个旧的是用螺丝拧的产品 电闸关掉。 2&#xff09;五金店买一个&#xff0c;这种是磁铁吸附的产品 现在好多都是铝线啊。。。 小部件&#x…

2024最新最全的车载测试教程__各模块测试用例

二、设计用例方法 1.测试用例设计前&#xff1a; a.仔细认真研读prd、理解prd b.质疑prd、有困惑或者想法的点做好记录&#xff0c;可以一次性和产品沟通 2.设计中&#xff1a; 成282 a.根据结构化思维&#xff0c;设计xmind i全链路正向功能点、子链路功能点 ⅱ.考虑业…

15.树形虚拟列表实现(支持10000+以上的数据)el-tree(1万+数据页面卡死)

1.问题使用el-tree渲染的树形结构&#xff0c;当数据超过一万条以上的时候页面卡死 2.解决方法&#xff1a; 使用vue-easy-tree来实现树形虚拟列表&#xff0c;注意&#xff1a;vue-easy-tree需要设置高度 3.代码如下 <template><div class"ve-tree" st…

大模型参数高效微调学习笔记

大模型参数高效微调学习笔记 github地址 billbill链接 1.分类 图中有五个大类&#xff1a; selective&#xff08;选择性微调&#xff09;&#xff1a;BitFit&#xff0c;Attention Tuningsoft prompts&#xff08;提示微调&#xff09;&#xff1a;Prompt-tuning&#xff0c…

实战指南:部署Elasticsearch 8.4.1与Kibana 8.4.1并集成IK分词器

首先拉取elasticsearch和kibana镜像 docker pull elasticsearch:8.4.1 docker pull kibana:8.4.1如果遇到镜像拉去不下来&#xff0c;遇到如下问题&#xff1a; [ERROR] error pulling image configuration: Get " https://production.cloudflare.docker.com/registry-v…