2014年河南事业单位考试计算机基础知识:建立单链表——先进先出单链表

合集下载

数据库技术知识数据结构的算法

数据库技术知识数据结构的算法

数据库技术知识数据结构的算法对于将要参加计算机等级考试的考生来说,计算机等级考试的知识点辅导是非常重要的复习资料。

以下是收集的数据库技术知识数据结构的算法,希望大家认真阅读!1、数据:数据的基本单位是数据元素。

数据元素可由一个或多个数据项组成。

数据项是数据的不可分割的最小单位2、数据结构:数据的逻辑结构、数据的存储结构、数据的运算3、主要的数据存储方式:顺序存储结构(逻辑和物理相邻,存储密度大)和链式存储结构顺序存储结构:顺序存储计算公式Li=L0+(i-1)×K顺序结构可以进行随机存取;插人、删除运算会引起相应节点的大量移动链式存储结构:a、指针域可以有多个,可以指向空,比比顺序存储结构的存储密度小b、逻辑上相邻的节点物理上不一定相邻。

c、插人、删除等不需要大量移动节点4、顺序表:一般情况下,若长度为n的顺序表,在任何位置插入或删除的概率相等,元素移动的平均次数为n/2(插入)和(n-1)/2(删除)。

5、链表:线性链表(单链表和双向链表等等)和非线性链表线性链表也称为单链表,其每个一节点中只包含一个指针域,双链表中,每个节点中设置有两个指针域。

(注意结点的插入和删除操作)6、栈:“后进先出”(LIFO)表。

栈的应用:表达式求解、二叉树对称序周游、快速排序算法、递归过程的实现等7、队列:“先进先出”线性表。

应用:树的层次遍历8、串:由零个或多个字符组成的有限序列。

9、多维数组的顺序存储:10、稀疏矩阵的存储:下三角矩阵顺序存储其他常见的存储方法还有三元组法和十字链表法11、广义表:由零个或多个单元素或子表所组成的有限序列。

广义表的元素可以是子表,而子表的元素还可以是子表12、树型结构:非线性结构。

常用的树型结构有树和二叉树。

二叉树与树的区别:二叉树不是树的特殊情况,树和二叉树之间最主要的区别是:二叉树的节点的子树要区分左子树和右子树,即使在节点只有一棵子树的情况下也要明确指出该子树是左子树还是右子树。

单链表的基本操作

单链表的基本操作

10)调用头插法的函数,分别输入10,20,分别回车:
11)调用尾插法的函数,分别输入30,40
12)查找单链表的第四个元素:
13)主函数中传入参数,删除单链表的第一个结点:
14)主函数传入参数,删除第0个未位置的元素,程序报错:
15)最后,输出单链表中的元素:
return 0;
}
6)编译,连接,运行源代码:
7)输入8,回车,并输入8个数,用空格分隔开,根据输出信息,可以看出,链表已经拆分为两个
五、实验总结
1.单链表采用的是数据+指针的表示形式,指针域总是指向下一个结
点(结构体)的地址,因此,在内存中的地址空间可以是不连续的,操作比顺序存储更加的方便
2.单链表使用时,需要用malloc函数申请地址空间,最后,删除元
素时,使用free函数释放空间。

单链表、双链表、循环链表和静态链表的习题

单链表、双链表、循环链表和静态链表的习题

单链表、双链表、循环链表和静态链表的习题一、单项选择题1.关于线性表的顺序存储结构和链式存储结构的描述中,正确的是()。

Ⅰ.线性表的顺序存储结构优于其链式存储结构Ⅱ.链式存储结构比顺序存储结构能更方便地表示各种逻辑结构Ⅲ.如频繁使用插入和删除结点操作,顺序存储结构更优于链式存储结构Ⅳ.顺序存储结构和链式存储结构都可以进行顺序存取A. Ⅰ、Ⅱ、ⅢB. Ⅱ、ⅣC. Ⅱ、ⅢD. Ⅲ、Ⅳ2.对于一个线性表既要求能够进行较快速地插入和删除,又要求存储结构能反映数据之间的逻辑关系,则应该用()。

A.顺序存储方式B.链式存储方式C.散列存储方式D.以上均可以3.对于顺序存储的线性表,其算法的时间复杂度为O(1)的运算应该是()。

A.将n个元素从小到大排序B.删除第i个元素(1<i<n)C.改变第i个元素的值(1<=i<=n)D.在第i个元素后插入一个新元素(1<=i<=n)4.下列关于线性表说法正确的是()。

Ⅰ.顺序存储方式只能用于存储线性结构Ⅱ.取线性表的第i个元素的时间同i的大小有关Ⅲ.静态链表需要分配较大的连续空间,插入和删除不需要移动元素Ⅳ.在一个长度为n的有序单链表中插入一个新结点并仍保持有序的时间复杂度为O(n) Ⅴ.若用单链表来表示队列,则应该选用带尾指针的循环链表A. Ⅰ、ⅡB.Ⅰ、Ⅲ、Ⅳ、ⅤC. Ⅳ、ⅤD. Ⅲ、Ⅳ、Ⅴ5.设线性表中有2n个元素,()在单链表上实现要比在顺序表上实现效率更高。

A.删除所有值为x的元素B.在最后一个元素的后面插入一个新元素C.顺序输出前k个元素D.交换第i个元素和第2n-i-l个元素的值(i=0,…, n-1)6.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入结点s,则执行()。

A .s->next=p->next;p->next=s; B.p->next=s->next; s->next=p;C. q->next=s;s->next=p;D. p->next=s;s->next=q;7.给定有n个元素的一维数组,建立一个有序单链表的最低时间复杂度是()。

408考试笔记

408考试笔记

408考试笔记一、计算机组成原理1. 冯诺依曼体系结构可不能忘呀。

计算机的五大部件:运算器、控制器、存储器、输入设备、输出设备。

就像一个小团队一样,各自有着明确的分工呢。

运算器负责计算数据,控制器就像个小指挥家,指挥着整个计算机系统的运行。

存储器用来存储数据和程序,输入设备把外部信息送进计算机,输出设备把计算机处理的结果输出出去。

2. 数据的表示和运算也很重要哦。

原码、反码、补码的概念得清楚。

原码就是符号位加上真值的绝对值,反码是原码除符号位外按位取反,补码是反码加1。

在做加减法运算的时候,补码可是很方便的呢。

3. 存储系统也有很多要记的。

主存的组成结构,什么存储单元、存储字、存储字长之类的。

还有高速缓冲存储器(Cache),它就像一个小助手,能够提高CPU访问数据的速度,原理是基于程序的局部性原理哦。

二、操作系统1. 操作系统的功能可多啦。

处理机管理,进程和线程是重点。

进程是资源分配的基本单位,线程是独立调度的基本单位。

进程有它的生命周期,创建、就绪、运行、阻塞、终止这些状态得牢记。

2. 内存管理也不简单。

分区存储管理、分页存储管理、分段存储管理都各有特点。

分页存储管理是把主存分成大小相等的块,程序也分成大小相等的页,通过页表来实现地址映射。

分段存储管理则是按照程序的逻辑段来划分内存,有段表来进行地址转换。

3. 文件系统方面,文件的逻辑结构和物理结构要分清。

逻辑结构有有结构文件(如顺序文件、索引文件等)和无结构文件(流式文件)。

物理结构有连续分配、链接分配(包括隐式链接和显式链接)、索引分配等。

三、计算机网络1. 网络体系结构的分层可不能搞混哦。

OSI七层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)和TCP/IP四层模型(网络接口层、网络层、传输层、应用层)。

每一层都有自己的功能和协议。

2. IP地址相关知识很关键。

IPv4地址是32位的,有A、B、C、D、E五类地址。

子网掩码的作用是用来划分网络号和主机号的。

事业单位简答题真题

事业单位简答题真题

事业单位招聘考试(计算机)全真试题
1.在单链表上实现求线性表表长的ListLength(L)运算。

2.什么是循环队列?
3.什么是队列的上溢现象?一般有几种解决方法,试简述之。

4.树、森林和二叉树是三种不同的数据结构,将树、森林转化为二叉树的基本目的是什么,并指出树和二叉树的主要区别。

5.一棵有n(n>O)个结点的d度树,若用多重链表表示,树中每个结点都有d个链域,则在表示该树的多重链表中有多少个空链域?为什么?
6.已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。

7.设一棵二叉树的先序、中序遍历序列分别为
先序遍历序列:ABDFCEGH,中序遍历序列:BFDAGEHC。

(1)画出这棵二叉树。

(2)将这棵二叉树转换成对应的树。

8.编写一个算法,求出邻接矩阵表示的无向图中序号为numb的顶点的度数。

9.设有一个长度为S的字符串,其字符顺序存放在一个一维数组的第1至第S个单元中(每个单元存放一个字符)。

现要求从此字符串的第m个字符以后删除长度为t的子串,m<S,t<(S-m),并将删除后的结果复制在该数组的第S单元以后的单元中,试设计此删除算法。

10.已知一组记录为{46,74,53,14,26,38,86,65,27,34},给出采用归并排序法进行排序时每一趟的排序结果。

11.简述排序方法的分类。

12.递归算法比非递归算法花费更多的时间,对吗?为什么?。

计算机基础知识:建立单链表——先进先出单链表

计算机基础知识:建立单链表——先进先出单链表
依据新结点插入位置的不同,将生成的单链表分为先进先出、后进先出及有序三种。 先进先出单链表:在建立单链表时,将每次生成的新结点,总是插入到当前链表的表尾作为尾结点。 若用换行符‘\n’作为输入结束标志,用 rear 作为总是指向链表尾结点的尾指针,则建立带表头结 点的先进先出单链表的算法如下: LinkList CreateList_ff( ) { LinkList H,p,rear; char ch; H=(LinkList)malloc(sizeof( ListNode)); /*生成表头结点*/ if(!H) { printf("\n 存储分配失败"); exit(1); } H->next=NULL; /*表初值为空*/ rear=H; /*尾指针指向表头结点*/ while((ch=getchar())!='\n') { p=(LinkList)malloc(sizeof( ListNode)); /*生成新结点*/ if(!p) { printf("\n 存储分配失败"); exit(1); } p->data=ch; p->next=p; /*新结点插入表尾*/ rear=p; /*尾指针指向新结点*/
计算机基础知识:建立单链表——先进先出单链表
2014 海南事业单位招聘信息 | 海南事单位考试真题及答案
在海南事业单位招聘(/hainan/?wt.mc_id=bk5870)考试中,计算机
专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习 为考生提供知识点梳理,帮助考生备考!
} return(H); /*返回头指针*/ }

单链表基本操作

单链表基本操作

单链表基本操作在计算机科学里,链表是一种常见的数据结构,它可以用来解决各种复杂的问题。

其中,单链表是最常见的一种,它由一系列节点组成,每个节点包含了一个数据元素和一个指针,指向下一个节点。

这篇文章将介绍单链表的基本操作,包括创建、插入、删除和遍历等。

创建单链表创建单链表是基本操作之一,它有两种方法:头插法和尾插法。

头插法是从链表的头节点开始,逐个将新节点插入。

具体来说,创建一个空链表,设置一个头节点,将头节点的指针指向空;依次输入新节点,将新节点的指针指向表头,将表头的指针指向新节点。

这样,每插入一个新节点就成为了新的表头,即最后插入的节点为新的表头。

尾插法则是从链表的尾节点开始,逐个将新节点插入。

具体来说,创建一个空链表,设置一个头节点,将头节点的指针指向空;依次输入新节点,将新节点的指针指向空,将最后一个节点的指针指向新节点。

这样,最后插入的节点为尾节点,它的指针值为空。

插入节点插入节点是指在单链表的任意位置插入一个新节点。

插入节点的前提是找到插入位置,可以通过遍历单链表来查找插入位置。

插入新节点的基本步骤如下:1、创建新节点;2、将新节点的指针指向待插入节点的后继节点;3、将待插入节点的指针指向新节点。

删除节点删除节点是指删除单链表中的任意节点。

删除节点的前提是找到删除的节点位置,可以通过遍历单链表来查找删除位置。

删除节点的基本步骤如下:1、找到要删除的节点;2、将该节点的前驱节点的指针指向该节点的后继节点;3、删除该节点。

遍历节点遍历节点是指按照链表的顺序依次访问链表中的各个节点。

遍历节点的基本步骤如下:1、从链表的头节点开始遍历;2、依次访问每个节点的数据元素;3、通过指针访问下一个节点,直到遇到尾节点。

优缺点单链表的优点是简单,灵活,易于实现和扩展,可以方便地进行插入和删除等操作。

其缺点是存在指针开销,查找元素时需要遍历整个链表,不能直接访问链表中任意位置的节点。

总结单链表是一种最常用的数据结构,它是由一系列节点组成,每个节点包含一个数据元素和一个指针,指向下一个节点。

408计算机考试考点

408计算机考试考点

408计算机考试考点一、数据结构。

(一)线性表。

1. 顺序存储结构。

- 定义:用一组地址连续的存储单元依次存储线性表的数据元素。

- 特点:- 逻辑上相邻的元素在物理位置上也相邻。

- 可以随机存取表中任一元素,时间复杂度为O(1)。

- 插入和删除操作需要移动大量元素,平均时间复杂度为O(n)。

例如,在顺序表的表头插入一个元素,需要将原表头后的所有元素向后移动一位。

2. 链式存储结构。

- 单链表。

- 定义:通过一组任意的存储单元存储线性表的数据元素,每个节点包含数据域和指针域,指针域指向下一个节点。

- 特点:- 逻辑上相邻的元素在物理位置上不一定相邻。

- 插入和删除操作不需要移动元素,只需要修改指针,时间复杂度为O(1)(如果已知插入或删除位置的前驱节点)。

但是查找一个元素的平均时间复杂度为O(n)。

- 循环链表。

- 定义:是一种首尾相接的单链表,最后一个节点的指针域指向头节点。

- 优点:从表中任一节点出发都能遍历整个链表。

在某些算法中,如约瑟夫环问题的解决,使用循环链表比普通单链表更方便。

- 双向链表。

- 定义:每个节点有两个指针域,一个指向前驱节点,一个指向后继节点。

- 特点:在双向链表中,查找前驱节点的时间复杂度为O(1),而在单链表中查找前驱节点需要从表头开始遍历,时间复杂度为O(n)。

这使得双向链表在某些需要频繁操作前驱节点的算法中更具优势,例如在对线性表进行删除操作时,如果知道要删除的节点,在双向链表中可以直接修改其前驱和后继节点的指针,而不需要像单链表那样先找到前驱节点。

(二)栈和队列。

1. 栈。

- 定义:是一种只能在一端进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底。

- 操作特性:后进先出(LIFO)。

例如,在函数调用时,系统会使用栈来保存函数的调用信息,当函数返回时,按照后进先出的顺序恢复调用现场。

- 存储结构:- 顺序栈:用顺序存储结构实现的栈。

其栈顶指针top指向栈顶元素的下一个位置(初始时top = 0),入栈操作时先将元素放入top指向的位置,然后top加1;出栈操作时先将top减1,然后取出top指向的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2014年河南事业单位考试计算机基础知识:建立单链
表——先进先出单链表
【导语】在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中中公事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考!
依据新结点插入位置的不同,将生成的单链表分为先进先出、后进先出及有序三种。

先进先出单链表:在建立单链表时,将每次生成的新结点,总是插入到当前链表的表尾作为尾结点。

若用换行符‘\n’作为输入结束标志,用rear作为总是指向链表尾结点的尾指针,则建立带表头结点的先进先出单链表的算法如下:
LinkList CreateList_ff( )
{
LinkList H,p,rear;
char ch;
H=(LinkList)malloc(sizeof( ListNode)); /*生成表头结点*/
if(!H)
{
printf("\n 存储分配失败");
exit(1);
}
H->next=NULL; /*表初值为空*/
rear=H; /*尾指针指向表头结点*/
while((ch=getchar())!='\n')
{ p=(LinkList)malloc(sizeof(
ListNode)); /*生成新结点*/
if(!p)
{
printf("\n 存储分配失败");
exit(1);
}
p->data=ch;
p->next=p; /*新结点插入表尾*/
rear=p; /*尾指针指向新结点*/
}
return(H); /*返回头指针*/
}
以上是中公事业单位考试网为考生梳理计算机基础知识点,供大家学习识记! 推荐河南事业单位招聘考试网/henan/?wt.mc_id=bk10702 发布河南最新的事业单位考试招聘信息。

相关文档
最新文档