ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

《数据结构实验指导-C++语言版》 从顺序表 list 中删除第 i 个元素

《数据结构实验指导-C++语言版》 从顺序表 list 中删除第 i 个元素 题目描述请编写程序将nnn个整数存入顺序表对任一指定的第iii个位置将这个位置上的元素从顺序表中删除。注意iii代表位序从 1 开始不是数组下标。输入格式输入首先在第一行给出正整数nnn≤104\le 10^4≤104随后一行给出nnn个 int 范围内的整数数字间以空格分隔最后一行给出删除位序iii为 int 范围内的整数。输出格式如果删除的位置不合法则不能删除在一行中输出句子错误不存在这个元素。。无论是否删除成功都在一行中顺序输出表中的元素每个元素后面跟一个空格。输入样例5 1 2 3 4 5 3输出样例1 2 4 5输入样例5 4 3 6 8 0 0输出样例错误不存在这个元素。 4 3 6 8 0解题思路顺序表删除操作的核心是前移覆盖把被删除位置之后的元素依次向前移动一位覆盖被删元素表长减 1。位序iii从 1 开始对应数组下标i−1i-1i−1删除前判断位置是否合法1≤i≤len1 \le i \le len1≤i≤len若不合法输出错误提示且不删除。合法删除时从下标i−1i-1i−1到len−2len-2len−2执行a[k] a[k1]然后len--。无论删除是否成功最后都要输出当前表中的全部元素。时间复杂度O(n)O(n)O(n)最坏情况需要移动几乎全部元素空间复杂度O(1)O(1)O(1)不含表本身。代码流程说明读入nnn将nnn个整数存入数组置表长len n。读入删除位序iii。判断若i 1 || i len输出不存在这个元素否则将下标i−1i-1i−1之后的元素逐个前移覆盖被删元素len--。顺序输出表中的全部元素每个元素后跟一个空格换行结束。代码实现#includeiostreamusingnamespacestd;constintMAXSIZE10000;inta[MAXSIZE];intlen0;intmain(){intn,i;cinn;for(intk0;kn;k)cina[k];lenn;cini;if(i1||ilen){cout错误不存在这个元素。endl;}else{for(intki-1;klen-1;k)a[k]a[k1];len--;}for(intk0;klen;k)couta[k] ;coutendl;return0;}代码流程图是否开始读入 n 和数组元素, len 等于 n读入删除位序 ii 是否小于 1 或大于 len输出不存在这个元素k 从 i-1 到 len-2 将元素前移一位len 减 1输出表中全部元素换行结束解题流程图否是删除顺序表中第 i 个元素读入表和删除位序 i位置 i 是否合法提示不存在这个元素将第 i 个位置之后的元素依次前移表长减 1输出表中元素
返回列表