提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
基于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),旨在与各位同学一起交流,提升技术。作为一位死磕嵌入式的小白,希望大家能在此过程中不吝赐教,如有问题,请大家批评指正。