本科课程【数据结构与算法】实验报告1——线性表的顺序表示及插入、删除操作(C++实现)

x33g5p2x  于2022-02-20 转载在 C/C++  
字(2.7k)|赞(0)|评价(0)|浏览(299)

大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。
如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!!
Good better best, never let it rest, until good is better, and better best.

近期会把自己本科阶段的一些课程设计、实验报告等分享出来,供大家参考,希望对大家有帮助。
持续更新。。。。。。。

一、 实验目的

  1. 熟悉数据结构实验环境的基本使用方法
  2. 掌握顺序表的顺序表示
  3. 实现线性表的插入操作
  4. 实现线性表的删除操作

二、 实验内容

1. 实验任务

线性表的顺序表示及插入、删除操作

2. 程序设计

1) 数据输入(输入哪些数据、个数、类型、来源、输入方式)
定义线性表结构体;
输入线性表的元素;
整型(int);
键盘输入。
2) 数据存储(输入数据在内存中的存储)
以数组方式存储,存储在ElemType Elements[MAX_LENGTH]中;
3) 数据处理(说明处理步骤。若不是非常简单,需要绘制流程图)
1、定义结构体List,初始化Eletype[]为零;
2、遍历线性表并输出在屏幕上;
3、完成插入删除操作;
4、插入一个元素.Length++;删除一个元素.length–;
5、输出插入删除后的线性表在桌面上。
4) 数据输出(贴图:程序运行结果截图。图幅大小适当,不能太大)

三、 实验环境

  1. 操作系统:WINDOWS 10
  2. 开发工具:VC++ 2013
  3. 实验设备:PC

源代码(C++实现)

头文件

#ifndef _LINEARLIST_H_
#define _LINEARLIST_H_

//
// 在此处包含 C 标准库头文件
//

#include <stdio.h>

//
// 在此处包含其他头文件
//

//
// 在此处定义数据结构
//

#define MAX_LENGTH 20	// 线性表的最大长度

typedef int ElemType;	// 线性表中元素的类型

typedef struct {
	ElemType Elements[MAX_LENGTH];	// 使用数组存储线性表中的元素,线性表的最大长度即为数组长度。
	int nLength;					// 线性表的实际长度,即线性表中元素的个数。
}SqList;

//
// 在此处声明函数
//

int InsertAfter(SqList* pList, ElemType Elem, int i);
int Delete(SqList* pList, int i, ElemType* pElem);

#endif /* _LINEARLIST_H_ */

.cpp文件

#include "插入删除.h"
#include<iostream>

using namespace std;

int main(int argc, char* argv[])
{
	SqList List;
	int i;
	ElemType Elem;

	//
	// 初始化线性表
	//
	List.nLength = 8;
	for (i = 0; i < List.nLength; i++)
	{
		List.Elements[i] = i;
		cout << List.Elements[i]<<" ";
	}
	cout << endl;

	//
	// 在第 i 个元素之后插入元素
	//
	InsertAfter(&List, 33, 5);
	InsertAfter(&List, 45, 15);		// 插入位置非法。插入失败。
	for (i = 0; i < List.nLength; i++)
	{
		cout << List.Elements[i]<<" ";
	}
	cout << endl;

	//
	// 删除第 i 个元素
	//
	Delete(&List, 6, &Elem);
	Delete(&List, 15, &Elem);		// 删除位置非法。删除失败。
	for (i = 0; i < List.nLength; i++)
	{
		cout << List.Elements[i]<<" ";
	}
	cout << endl;

	system("pause");
	return 0;
}

/*
功能:
在第 i 个元素之后插入一个元素。

参数:
pList -- 线性表
Elem -- 插入的元素
i -- 指定位置。从 1 开始计数。

返回值:
如果插入成功返回 1
如果插入失败返回 0
*/
int InsertAfter(SqList* pList, ElemType Elem, int i)
{
	int nIndex;		// 用于移动元素的游标

	//
	// TODO: 在此添加代码
	//
	if (i <= 0 || i > pList->nLength)
	{
		cout << "插入非法" << endl;
		return 0;
	}
	else
	{
		nIndex = pList->nLength;
		for (nIndex; nIndex >= i; nIndex--)
		{
			pList->Elements[nIndex + 1] = pList->Elements[nIndex];
		}
		pList->Elements[i] = Elem;
		pList->nLength++;
		cout << "插入成功" << endl;
		return 1;
	}
	return 0;
}

/*
功能:
删除第 i 个元素。

参数:
pList -- 线性表
i -- 删除元素的位置。从 1 开始计数。
pElem -- 返回被删除元素的值。

返回值:
如果删除成功返回 1
如果删除失败返回 0
*/

int Delete(SqList* pList, int i, ElemType* pElem)
{
	int nIndex;		// 用于移动元素的游标

	//
	// TODO: 在此添加代码
	//

	if (i <= 0 || i > pList->nLength)
	{
		cout << "删除非法" << endl;
		return 0;
	}
	else
	{
		nIndex = i+1;
		for (nIndex; nIndex<=pList->nLength; nIndex++)
		{
			pList->Elements[nIndex -1] = pList->Elements[nIndex];
		}
		pElem[0] = pList->Elements[i];
		cout <<"删除的元素为:"<< pElem[0] << endl;
		pList->nLength--;
		cout << "删除成功" << endl;
		return 1;
		
	}

	return 0;
}

相关文章