实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】
程序员文章站
2022-03-22 20:01:29
...
一、实验目的
1、熟悉将算法转换为程序代码的过程。
2、了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的c语言描述方法。
3、熟练掌握顺序表的基本运算:查找、插入、删除等,掌握顺序表的随机存取特性。
4、了解线性表的链式存储结构,熟练掌握线性表的链式存储结构的C语言或C++语言的描述方法。
5、熟练掌握线性链表(单链表)的基本运算:查找、插入、删除等,能在实际应用中灵活选择适当的链表结构。
二、算法说明
在本次实验中,首先程序自己建立一个空的头结点,通过菜单的功能选择“添加表的数据”可*添加链表的节点数及元素值。在菜单选择中,有“添加链数据”,“插入链表数据”,“删除链表数据”,“查找链表数据”和“显示链表数据”功能,选择不能的功能选择就能实现不同的操作。其中“添加链表数据”可反复批量输入链表数据。
三、算法实现
#include <iostream>
using namespace std;
#define MAXSIZE 10 //顺序表的最大长度
typedef int ElemType; //别名int类型
typedef struct list
{
ElemType elem[MAXSIZE]; //int型数组
int length; //顺序表长度
}Sqlist; //顺序表类型
//创建顺序表, //输入一组整型元素序列,建立一个顺序表,引用类型L,引用已经建立好的顺序表
void CreateList(Sqlist &L)
{
int i;
cout << "请输入顺序表长度:";
cin >> L.length;
cout << "请输入顺序表元素:";
for(i=0; i<L.length; i++)
cin >> L.elem[i];
}
//输出顺序表
void PrintList(Sqlist &L)
{
int i;
cout << "顺序表所有元素有:";
for(i=0; i<L.length; i++)
cout << L.elem[i] << " ";
cout << endl << "--------------------------------" << endl;
}
//在顺序表的第i个位置插入一个元素x
void InsertList(Sqlist &L, int i, ElemType x)
{
int j;
for(j=L.length-1; j>=i-1; j--) //先移动再插入
L.elem[j+1]= L.elem[j]; //从前往后赋值,即插入位置之后的元素后移一个单位
L.elem[i-1]= x; //i位置插入元素
++L.length; //顺序表长度加1
}
//删除顺序表中第i个元素
void DeleteList(Sqlist &L, int i)
{
int j;
for(j=i; j<=L.length; j++)
L.elem[j-1]= L.elem[j]; //从后往前赋值,被删除之后的元素依次向前移
--L.length; //顺序表长度减1
}
int main()
{
Sqlist li; //空表
CreateList(li);
PrintList(li);
DeleteList(li, 1); //删除第一个元素
PrintList(li);
InsertList(li, 2, 9); //在第2个位置插入9
PrintList(li);
}
四、测试效果
上一篇: SQL在MySQL数据库中是如何执行的
下一篇: jquery post与ajax区别