顺序表实验报告 一、 实验内容和目的 实验目的:掌握顺序表的建立、查找、插入和删除操作。 掌握有序表的建立、合并、插入操作。 实验内容:1. 顺序表的建立 2. 顺序表的遍历 3. 顺序表的元素查找 4. 顺序表的元素插入 5. 顺序表的元素删除 6. 有序表的建立 7. 有序表的遍历 8. 有序表的元素插入 9. 有序表的合并 二、 实验原理 基本原理: 通过连续的地址空间实现逻辑上和物理上连续的储存的一系列元素。并在此基础上进行元素的添加,查找,删除操作。 有序表的插入算法: 元素插入之前的,先跟有序表中的逐个元素进行对比,以找到合适的插入位置。 例如,已有有序表L,要向 L 中插入元素 18 L = {13,15,17,19,20,35,40} 第一步:将18 与L1 进行比较,18 > L1,不是合适的插入位置。 第二步:将18 与L2 进行比较,18>L2,仍然不是不是的插入位置。 重复上述步骤,知道找到18≤Ln,然后在 (n-1) 和n 之间插入元素。 (如果元素比有序表中的所有元素都要大,则把该元素放到有序表的最后) 此例子中,Ln-1 = 17,Ln = 19 插入元素之后的有序表L 为: L′ = {13,15,17,18,19,20,35,40} 仍然保持有序。 重置光标的位置: 程序接受两种方式的输入。一种是输入数字后按回车,一种是利用空格间隔的连续几个数字。然而,在使用后者输入数字的时候,会出现提示输出不正确的问题。(如图) 这个问题的原因简单如下: 当程序输出“请输入第 2 个数字:”的时候,应该等待用户输入;然而,在程序等待输入第一个数字的时候,用户输入了五个数字。因此,程序输出“输入第 2 个提示以后”,程序发现仍然有数据没有进行处理,因此把上次输入但未处理的字符当成是用户的输入。所以没让用户输入数据就自动继续执行。 解决这个问题的思路: 每次输出提示时,将光标移动到行首,因此,输出提示的时候会自动覆盖已经输出的提示信息。效果如下: 具体的解决方法: #include // 将光标移动到行首 void ResetCursor() { HANDLE hOut; COORD cTarget; CONSOLE_SCREEN_BUFFER_INFO info; int y = 0; hOut = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hOut, &info); y = info.dwCursorPosition.Y; cTarget.X = 0; cTarget.Y = y; SetConsoleCursorPosition(hOut, cTarget); } 三、 程序流程图 四 、 实 现 步 骤 4.1 创...