在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一相关的知识,希望对你有一定的参考价值。
在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一
个元素,元素的移动次数为____。
A)n-i+1
B)n - i
C)i
D)i-1
请说明一下过程谢谢!!1
元素的移动次数为n-i+1,选A。
举例说明:如1 2 3。在第2个位置插入一个a,则变成:1 a 2 3,2和3分别后移一位,所以总共移动3+1-2=2次。
顺序表的存储特点只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤i≤n 其中,L是元素占用存储单元的长度。
扩展资料:
顺序表的结构定义:
#define maxlen 50 //定义顺序表中元素个数最多有几个
typedef struct
elementtype data[maxlen]; //elementtype是元素的类型 依具体情况而定
int listlen; //便于时刻了解顺序表里元素的个数
seqlist; //顺序表的名称 不妨为seqlist
声明顺序表类型变量:
seqlist L,L1;
如顺序表的每个结点占用len个内存单元,用location (ki)表示顺序表中第i个结点ki所占内存空间的第1个单元的地址。则有如下的关系:location (ki+1) = location (ki) +len
location (ki) = location(k1) + (i-1)len
存储结构要体现数据的逻辑结构,顺序表的存储结构中,内存中物理地址相邻的结点一定具有顺序表中的逻辑关系。
参考技术A A在第i个位置上插入一个元素,总个数变成n+1,移动次数是n+1-i
如:1 2 3
在第2个位置插入一个a,则变成:1 a 2 3
2和3分别后移一位,所以总共移动3+1-2=2次本回答被提问者采纳 参考技术B 在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一
个元素,元素的移动次数为____。
A)n-i+1
B)n - i
C)i
D)i-1
请说明一下过程谢谢!!1
DS顺序表--连续操作
题目描述
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)
该类具有以下成员函数:
构造函数:实现顺序表的初始化。
插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。
删除多个数据的multidel(int i, int n)函数,实现从第i个位置开始,连续删除n个数据,即从位置i开始删除多个数据。
编写main函数测试该顺序表类。
输入
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
第2行先输入i表示插入开始的位置,再输入k表示有k个插入数据,接着输入k个数据
第3行先输入i表示删除开始的位置,再输入k表示要删除k个数据
输出
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开
第1行输出创建后的顺序表内容
第2行输出执行连续插入后的顺序表内容
第3行输出执行连续删除后的顺序表内容
样例输入
样例输出
提示
#include<iostream> using namespace std; #define ok 0 #define error -1 class SeqList { private: int *list;//元素数组 int maxsize;//顺序表最大长度 int size;//顺序表实际长度 public: SeqList() { maxsize=1000; size=0; list=new int[maxsize]; } SeqList(int n,int *p) { maxsize=1000; list=new int[maxsize]; size=n; for(int i=0;i<n;i++) list[i]=p[i]; } ~SeqList() { delete []list; } int list_size() { return size; } int list_insert(int i,int item) { if(i<1||i>size+1) { cout<<"error"<<endl; return error; } int t=i-1; for(int j=size-1;j>=t;j--) { list[j+1]=list[j]; } list[t]=item; size++; return ok; } int list_del(int i) { if(i<1||i>size) { cout<<"error"<<endl; return error; } int t=i-1; for(int j=t;j<size-1;j++) { list[j]=list[j+1]; } size--; return ok; } int list_get(int i) { if(i<1||i>size) { cout<<"error"<<endl; return error; } int t=i-1; return list[t]; } void list_display() { cout<<size<<" "; for(int i=0;i<size;i++) cout<<list[i]<<" "; cout<<endl; } int multiinsert(int i,int n,int item[]) { if(i<1||i>size+1) return error; for(int count=0;count<n;count++) { list_insert(i,item[n-1-count]); } return ok; } int multidel(int i,int n) { if(i<1||i>size||i+n-1>size) return error; for(int count=0;count<n;count++) { list_del(i); } return ok; } }; int main() { int n; cin>>n; int *p=new int[n]; for(int i=0;i<n;i++) { cin>>p[i]; } SeqList L(n,p); L.list_display(); int index; cin>>index>>n; int *q=new int[n]; for(int i=0;i<n;i++) { cin>>q[i]; } if(L.multiinsert(index,n,q)!=error) L.list_display(); cin>>index>>n; if(L.multidel(index,n)!=error) L.list_display(); delete []p; delete []q; return 0; }
以上是关于在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一的主要内容,如果未能解决你的问题,请参考以下文章