基于VS2010下编译的线性表程序(数据结构和算法实验常做)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

基于VS2010下编译的线性表程序


前言

2022年10月8日,也就是今天,一位大三的技术小白(也就是我)用VS2010实现了总共261行代码的线性表程序。(喜悦的心情不言而喻),想到前几天还在被算法所折磨,今天终于有了一点成就感。相信即将上数据结构与算法的学弟学妹们,不免被冗长的程序搞得抓耳挠腮,在此分享自己编程过程,希望可以帮助到你们。


一、首先介绍下VS2010的使用

下载安装在此就不讲了,主要介绍创建项目。
1、打开文件选项卡,点击子选项的新建,新建项目。
在这里插入图片描述
2、选择Win32控制台应用项目,输入项目名称(最好英文哦!),点击确定。在这里插入图片描述
3、点击下一步,选择空文件,点击完成。
在这里插入图片描述
4、在源文件中添加新建项在这里插入图片描述
5、选择C++文件,输入文件名,点击添加就成功创建了1个C++项目。在这里插入图片描述

二、线性表程序

1.引入库、声明变量

代码如下(示例):

#include<iostream>
using namespace std;//预处理命令,相当于C中的#include
const int MAXSIZE =12;//const定义常量,使值不能修改,按顺序表中的元素修改长度
typedef int DataType;//定义1个结构体
typedef struct
{
	DataType data[MAXSIZE];
	int length;
}SeqList;

2.函数声明

代码如下(示例):

void Init_SeqList(SeqList &L);//创建空顺序表算法
void Show_SeqList(SeqList L);//顺序表输出算法
void Create_SeqList(SeqList &L);//顺序表创建算法 
int Insert_SeqList(SeqList &L,DataType x,int i);//顺序表的插入算法
int Delete_SeqList(SeqList &L,int i);//顺序表的删除算法
int Locate_SeqList(SeqList L,DataType x);//顺序表的按值查找算法
void Sort_SeqList(SeqList &L);//顺序表的排序算法
int Insert_SeqList_sort(SeqList &L,DataType x);//有序表的插入算法
void Merge(SeqList LA,SeqList LB,SeqList &LC);//两个有序顺序表的合并算法
void menu(); //菜单算法

主要声明以上函数实现顺序表的创建、输出、插入、删除、查找、排序以及有序表的插入、两个有序顺序表的合并。


3.main()函数

代码如下(示例):

int main()
{ 
	menu(); 
	return 0;
}

主函数中调用menu()函数。


4.部分算法解释

顺序表输出算法代码如下(示例):

void Show_SeqList(SeqList L)//顺序表输出算法
{
	if(L.length==0)
	cout<<"空表!"<<endl;
	else
	for(int i=0;i<L.length;i++)
	cout<<L.data[i]<<" ";
	cout<<endl;
}

此算法原理比较简单,判断顺序表是否为空表,为空表则输出空表,不为空表则输出顺序表中的值。

PS:cout<<L.data[i]<<" “;这段代码对于新手可能会有点迷惑,小编这就为大家解释一下:<<endl输出数据后换行再输出下一个数据,而<<” "输出数据后空一格再输出下一个数据。


顺序表创建算法代码如下(示例):

void Create_SeqList(SeqList &L)//顺序表创建算法
{
	cout<<"请输入元素个数:";
	cin>>L.length;
	cout<<"依次输出各个元素的值:"<<endl;
	for(int i=0;i<L.length;i++)
		cin>>L.data[i];
}

顺序表插入算法代码如下(示例):

int Insert_SeqList(SeqList &L,DataType x,int i)
{
	if(MAXSIZE<=L.length)//判断顺序表长度是否超过储存空间
		return -1;
	if(i<1||i>L.length+1)//判断数据插入位置是否超过数序表长度
		return 0;
	for(int j=L.length-1;j>=i-1;j--)
		L.data[j+1]=L.data[j];//将插入的元素插入到输入位置
	L.data[i-1]=x;
	L.length++;//顺序表长度加一
	return 1;
}

顺序表删除算法代码如下(示例):

int Insert_SeqList(SeqList &L,DataType x,int i)
{
	if(MAXSIZE<=L.length)//判断顺序表长度是否超过储存空间
		return -1;
	if(i<1||i>L.length+1)//判断数据插入位置是否超过数序表长度
		return 0;
	for(int j=L.length-1;j>=i-1;j--)
		L.data[j+1]=L.data[j];//将插入的元素插入到输入位置
	L.data[i-1]=x;
	L.length++;//顺序表长度加一
	return 1;
}

顺序表的按值查找算法代码如下(示例):

int Locate_SeqList(SeqList L,DataType x)//顺序表的按值查找算法
{
	int i=0;
	while(i<L.length&&L.data[i]!=x)
		i++;
	if(i<L.length )
	return i+1;
	else
	return 0;
}

顺序表的排序算法代码如下(示例):

void Sort_SeqList(SeqList &L) //排序算法
{
	int i,k,j;
	DataType temp;
	for(i=0;i<L.length-1;i++)
	{
	k=i;
	for(j=i+1;j<=L.length-1;j++)
	if(L.data [j]<L.data [k])
	k=j;
	if(i!=k)
		{
		temp=L.data [i];
		L.data [i]=L.data [k];
		L.data [k]=temp;
		}
	}
}

总结

以上就是今天要分享的内容,本文仅仅简单介绍了VS2010的使用,介绍了创建线性表的几个重要函数,具体代码已经在gitee仓库开源(https://gitee.com/nqqdz/sequence-table.git),旨在与各位同学一起交流,提升技术。作为一位死磕嵌入式的小白,希望大家能在此过程中不吝赐教,如有问题,请大家批评指正。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Looking forward to a bright

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值