如何在顺序线性表中第i个位置之前插入新的元素e

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在顺序线性表中第i个位置之前插入新的元素e相关的知识,希望对你有一定的参考价值。

参考技术A #include <iostream.h>
#define arrsize 1024
void main()

int a[arrsize],elenum=0;
int input(int a[]);
void print(int a[],int n);
int ins(int a[],int k,int x,int n);

elenum=input(a);
print(a,elenum);
int y,i;
cout<<"输入插入位置:";
cin>>i;
cout<<"输入插入元素:";
cin>>y;
elenum=ins(a,i,y,elenum);
print(a,elenum);


int input(int a[])

int x,k=0;
cout<<"请输入顺序表中的元素(每个元素用空格分开,以输入0为结束条件):"<<endl;
cin>>x;
while(x!=0)

a[k]=x;
k++;
cin>>x;

return k;

int ins(int a[],int k,int x,int n)

int i,j;
i=x;
for(j=n;j>=k;j--)
a[j+1]=a[j];
a[k]=i;
return n+1;

void print(int a[],int n)

for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
本回答被提问者采纳

数据结构练习题

  1. 逻辑上通常可以将数据结构分为(线性结构和非线性结构)
  2. 如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是(树)
  3. 在长度为n的顺序表的第i个位置上插入一个元素(1in+1),元素的移动次数为:n-i+1
  4. 在非空线性链表中由p所指结点的后面插入一个由q所指的结点,应依次执行(q->next=p->next;p->next=q
  5. 已知栈的最大容量为4.若进栈序列为123456,且进栈和出栈可以穿插进行,则可能出现的出栈序列为(325416
  6. 设栈S和队列Q初始均为空,若6个元素入栈的顺序为123456,一个元素出栈以后立即入队列Q,若6个元素出队列的顺序为243651,则栈S的容量至少为(3
  7. 在计算机内实现递归算法时所需的辅助数据结构是(栈)
  8. 循环队列存储在数组A[0..m-1],则出队时的操作为(front=(front+1) mod m
  9. 若以SX分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是(SSSXXSXX
  10. 在具有m个单元的循环队列中,队头指针为front,队尾指针尾rear,则队满的条件是((rear+1%m==front
  11. 在表长为n的顺序表上做插入运算,平均要移动的结点数为(n/2
  12. 元素的进栈次序为ABCDE,则退栈中不可能的序列是E,A,B,C,D)
  13. 下述二叉树中,(哈夫曼树)满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序。
  14. 若用邻接矩阵表示一个有向图,则其中每一行包含的″1″的个数为(图中每个顶点的出度)
  15. 具有6个顶点的无向图至少应该有(5)条边才能确保是一个连通图
  16. 下面(拓扑排序)方法可以判断出一个有向图中是否有环(回路)
  17. 采用邻接表存储的图的深度优先遍历算法类似于二叉树的(先序遍历)
  18. 对线性表进行二分查找时,要求线性表必须是(以顺序方式存储,且结点按关键字有序排列)
  19. 由带权为9257的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为(44
  20. 快速排序方法在(要排序的数据已基本有序)情况下最不利于发挥其长处。
  21. 一组记录的排列码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为(84,79,56,38,40,46
  22. 下列陈述中正确的是(二叉树中最多只有两棵子树,并且有左右之分)
  23. 树的先根序列等同于与该树对应的二叉树的(先序序列)
  24. 以下有关广义表的表述中,正确的是(由0个或多个原子或子表构成的有限序列)
  25. 下列各项键值序列中不是堆的为({523167394727168}
  26. 线性表采用链式存储结构时,要求内存中可用存储单元的地址(连续和不连续都可以)
  27. 对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为(用尾指针表示的单循环链表)
  28. 线性表是n个具有相同类型(数据元素)的有限序列(n>=0)
  29. 在线性表的下列运算中,不改变数据元素之间结构关系的运算是(定位)
  30. 链表中逻辑上相邻的元素其物理地址(不一定)相邻
  31. 4
  32. 有一个有序表为(1,3,9,12,32,41,45,62,75,77,82,95,100),当二分查找值为82的结点时,()次比较后查找成功。4
  33. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的(1倍
  34. 下列叙述中不符合m阶B树定义要求的是(叶结点之间通过指针链接 )
  35. 线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。错)结点内部空间是连续的
  36. 在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。(对)
  37. 顺序存储的线性表可以随机存取。(对)
  38. 若一个广义表的表头为空表,则此广义表亦为空表。错)例如: 广义表()和(())不同。前者是长度为0的空表,对其不能做求表头和表尾的运算;而后者是长度为l的非空表(只不过该表中惟一的一个元素是空表),对其可进行分解,得到的表头和表尾均是空表() ”
  39. 任何一个非空广义表,其表头可能是单元素或广义表,其表尾必定是广义表。(对)
  40. 广义表是由零或多个原子或子表所组成的有限序列,所以广义表可能为空表。(对)
  41. 用树的前序遍历和中序遍历可以导出树的后序遍历。对)
  42. 在哈夫曼编码中,当两个字符出现的频率相同时,其编码也相同,对于这种情况应特殊处理。错)
  43. 将一棵树转换成二叉树后,根结点没有左子树。错)
  44. n个结点的无向图中,若边数〉n-1,则该图必是连通图。错)
  45. 一个图的广度优先遍历生成树是唯一的错)
  46. 对两棵具有相同关键字集合而形状不同的二叉排序树,按中序遍历它们得到的顺序是一样的.(对)
  47. 负载因子(装填因子)是散列表的一个重要参数,它反映散列表的装满程度。错)
  48. 对一个堆,按二叉树层次进行遍历可以得到一个有序序列。错)
  49. 对于n个记录的集合进行冒泡排序,在最坏情况下所需要的时间是O(n平方)。(对)
  50. 设串sl=″Data Structures withJava″,s2=“it″,则子串定位函数index(s1,s2)的值为(18
  51. 广义表((a,b),c,d)的表头是(     ) (a,b)
  52. 若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找关键字b的过程中,先后进行比较的关键字依次为 (       )f,c,b
  53. 假设带头结点的单向循环链表的头指针为head,则该链表为空的判定条件是(head–>next= =head)
  54. 二维数组A[8][9]按行优先顺序存储,若数组元素A[2][3]的存储地址为1087,A[4][7]的存储地址为1153,则数组元素A[6][7]的存储地址为(1207
  55. 已知二叉树的中序序列和后序序列均为ABCDEF,则该二叉树的先序序列为(FEDCBA
  56. 已知在顺序表中每个元素需占用8个存储单元,且LOC(a1)=100,则LOC(a5)=(132)
  57. 广义表GetTail[GetHead[GetTail[((a,b),(c,d))]]]操作的结果为((d)
  58. 深度为5的二叉树至多有31个结点
  59. 广义表((()),a,((b,c),(),d),(((e))))的长度为(4

以上是关于如何在顺序线性表中第i个位置之前插入新的元素e的主要内容,如果未能解决你的问题,请参考以下文章

《线性表的总结---线性顺序表(静态,动态)---线性链表(动态)》

线性表的创建,删除插入等操作

线性表的顺序存储结构元素的获取,插入及删除

线性表的顺序存储结构元素的获取,插入及删除

c语言数据结构(考题,测试你的能力)--编写源代码

数据结构实验:线性表的顺序表示和链式表示及插入、删除、查找运算