天马行空

使用递归算法删除不带头结点单链表L中所有值为X的结点

使用递归算法删除不带头结点单链表L中所有值为X的结点

设计一个递归算法,删除不带头结点的单链表L中所有值为X的结点。 根据题目中,删除单链表L中所有值为X的结点,也就把if(data == x)的值删掉。本题的重点是考察递归算法,同时要求单链表不带头结点。 那么,下面具体看看使用递归算法是如何实现的。 一、递归算法代码 void Del_X_recursion(Linklist &L,int X) { i……

  • by c/c++
  • 2019-07-21 17:08:06
  • 66 次阅读

如何实现递增有序线性表中查找与插入X操作

如何实现递增有序线性表中查找与插入X操作

线性表(a1,a2,a3,……,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法完成用最少时间在表中查找数值为X的元素,若找到将其与后继元素位置相交换,若找不到将其插入表中并使表中元素仍递增有序。 这道题重点信息是线性表有序,即数组有序,同时还要求用最少的时间查找表中值为X的元素。这时,我们可以考虑采用折……

  • by c/c++
  • 2019-07-07 14:58:15
  • 84 次阅读

从有序顺序表中删除所有重复值的元素,使表中所有元素的值都不同

从有序顺序表中删除所有重复值的元素,使表中所有元素的值都不同

在题目中有序表也就是数组,下面是一个由小到大排列起来的数组,其中含有某些重复的元素。现在,我们的目的是把数组中重复的元素删除掉。 为了方便,考虑设置两个指针变量分别为i和j,从左到右依次进行遍历。假如i记录要留下的元素的个数;j记录所有访问到的元素个数。i始终落后于j,也就是i<=j。这样把后面的元素赋值……

  • by c/c++
  • 2019-06-30 12:04:29
  • 131 次阅读

长度为n的顺序表L删除线性表中值为X的算法

长度为n的顺序表L删除线性表中值为X的算法

长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为X的数据元素。 要求时间复杂度为O(n),这里隐藏着条件,排序算法不能使用,因为排序中最低时间复杂度为O(nlogn),这是大于题目中所给的要求为O(n)的条件。因此,我们要把排序算法排除在外,转而采用其它的方法。 (1)删除……

  • by c/c++
  • 2019-06-29 13:38:52
  • 88 次阅读

说明对于相同的逻辑结构,采用不同的存储方式会影响其操作效率

说明对于相同的逻辑结构,采用不同的存储方式会影响其操作效率

顺序表和链表都是线性表,这是他们的共同之处(逻辑结构相同),但它们的存储方式是不同的。那就看看在顺序表和链表中运算效率是怎样产生不同的? 线性表既可以采用顺序存储方式,也可以采用链式存储方式来实现。 (1)在顺序存储方式下,在线性表中插入和删除元素,平均要移动一半的元素,时间复杂度是O(n)。 事实上,就是……

  • by c/c++
  • 2019-06-25 22:07:41
  • 95 次阅读

链式存储设计时,链表结点内的存储单元地址是如何分布的?

链式存储设计时,链表结点内的存储单元地址是如何分布的?

A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续 链式存储设计时,各个不同结点的存储空间可以不连续,但是结点内的存储单元地址则必须连续。 typedef struct LNode { int value; // value中存放结点值域,默认是int型 struct Lnode *next;//指向后继结点的指针 }LNode; // 定义单链表结点类型 上述定……

  • by c/c++
  • 2019-06-23 11:20:18
  • 129 次阅读

数据结构的逻辑结构与存储结构相关问题

数据结构的逻辑结构与存储结构相关问题

下列属于逻辑结构的是? A.顺序表B.哈希表C.有序表D.单链表 (1)ABD中的这三种数据结构既描述了逻辑结构,同时也描述了存储结构(物理结构),以及数据的运算。因此,这三种不是纯粹的逻辑结构。 (2)C中的选项有序表是一种纯粹的逻辑结构。有序表是指关键字有序的线性表,它只描述了这些关键字或者说元素之间的逻辑关系,只……

  • by c/c++
  • 2019-06-22 18:59:25
  • 102 次阅读

树和森林的遍历相关总结

树和森林的遍历相关总结

树和森林都有两种遍历方法,分别为先序遍历和后序遍历。但对于森林的后序遍历,有的教材叫中序遍历,其实它们是同一种遍历方法,只是叫法不同。而二叉树的遍历方式有先序遍历,中序遍历,后序遍历和层次遍历。树或森林转化为二叉树后,树或森林的先序遍历对应二叉树的先序遍历,树或森林的后序遍历对应二叉树的中序遍历。……

  • by c/c++, 程序
  • 2017-11-07 13:10:33
  • 1,260 次阅读

字符串模式匹配之KMP改进算法

字符串模式匹配之KMP改进算法

串是字符串的简称,是计算机中常见且重要的数据结构。串 (string)是由零个或多个字符组成的有限连续序列。串中字符的个数称为串的长度,含有零个元素的串叫空串。空格串不是空串,而是由一个或多个空格组成的串。空格串也是字符集合的一个元素。 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。串的……

  • by c/c++, 程序
  • 2017-11-01 12:14:56
  • 1,004 次阅读

链式队列的插入和删除操作

链式队列的插入和删除操作

链式队列就是采用链式存储结构存储队列,其采用单链表来实现。一个链队列需要两个分别指向队头和队尾的指针(front和rear)。在什么情况下使用链式队列和顺序队列呢?当一个应用程序同时使用多个队列时,采用链式队列比较好,而当只有一个队列时,使用顺序队列比较好。插入和删除元素即为链式队列的主要操作对象。 ①链式……

  • by c/c++, 程序
  • 2017-10-23 12:55:10
  • 1,332 次阅读

循环队列进队与出队算法

循环队列进队与出队算法

队列是插入位置和删除位置受限制的线性表,它只能在一端进行插入,而另一端进行删除元素,其只允许插入的一端称为队尾,只允许删除的一端称为队首。 由于队列中的元素在插入与删除时,两端的都要变化,所以需要两个指针,一个是front指向队首元素,另一个是rear指向队尾的下一个地址。有的课本上是front指针指向前一个地……

  • by c/c++, 程序
  • 2017-10-22 13:32:06
  • 1,351 次阅读

链式栈的插入与删除算法

链式栈的插入与删除算法

链式栈在设计时要注意的问题是判断栈是否为空,链栈不存在栈满的情况(假定内存无限大的情况不存在)。现在要求设计一个用不带头结点的单链表存储栈,将一个新结点插入到栈顶中,然后将其删除的算法。具体算法内容如下: ①链式栈插入(push)参考图: ②链式栈插入(push)代码: void push(LNode *&lst,int x) { LNode *p;……

  • by c/c++, 程序
  • 2017-10-21 14:37:34
  • 1,030 次阅读