欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】

程序员文章站 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); 
} 

四、测试效果

实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】