c++实现顺序表

c++实现顺序表,IDE是vs2013.

#include "stdafx.h"
#include <iostream>  
#include <stdio.h>  
using namespace std;
const int maxsize = 100;
typedef struct SeqList
{
	int elem[maxsize];
	int length;
}SeqList;
SeqList sq;
void  CreatList(SeqList &sq, int a[], int n)//1.建立顺序表  
{
	int i;
	for (i = 0; i<n; i++)
	{
		sq.elem[i] = a[i];//将数组元素分别赋值给顺序表  
	}
	sq.length = n;//顺序表已经使用的长度等于数组长度  
}
void InitalList(SeqList &sq)            //2.顺序表初始化  
{
	sq.length = 0;
}
int ListLength(SeqList sq)          //3.求线性表的长度运算  
{
	return (sq.length);
}
int GetElement(SeqList sq, int i)        //4.求某个线性表的第i个元素的值,GetElement(线性表地址,位置)  
{
	if (i<1 || i>sq.length)
	{
		return 0;
	}
	return sq.elem[i - 1];
}
int LocateElement(SeqList &sq, int x)    //5.按元素值x查找运算,LocateElement(线性表地址,数值)  
{
	int i = 0;
	while (i<sq.length&&sq.elem[i] != x)
	{
		i++;
	}
	if (sq.elem[i] == x)//如果找到了这个值x,返回其位置  
	{
		return i + 1;
	}
	else//没有这个值,返回错误0  
	{
		return 0;
	}
}
int Insert(SeqList &sq, int x, int i)//6.插入数据元素运算,x是要插入的值,i是位置(位置下标从1开始),Insert(线性表地址,数值,位置)  
{
	int j;
	if (i<1 || i>sq.length + 1)//被插入的元素的下标不合理,退出  
	{
		return 0;
	}
	for (j = sq.length; j>i - 1; j--)
	{
		sq.elem[j] = sq.elem[j - 1];    //元素顺序从后到前,将data[i]及后面元素后移一个位置  
	}
	sq.elem[i - 1] = x;
	sq.length++;                    //顺序表长度增加1;  
	return 1;
}
int Delete(SeqList &sq, int i)//7.删除数据元素,i是位置(位置下标从1开始,不包括0),Delete(线性表地址,数值,位置)  
{
	int j;
	int e = 0;
	if (i<1 || i>sq.length)//被删除元素的下标不合理,退出  
	{
		return 0;
	}
	e = sq.elem[i - 1];//e返回被删除元素的值  
	for (j = i; j<sq.length; j++)//从前到后,将elem[i]之后的元素向前移一位  
	{
		sq.elem[j - 1] = sq.elem[j];
	}
	sq.length--;
	return e;
}
int IsEmpty(SeqList &sq)            //8.判断顺序表是否为空  
{
	if (sq.length == 0)    //已用长度为0就是空表  
	{
		return 1;
	}
	else if (sq.length>0)//长度大于0不是空表  
	{
		return 0;
	}
}
void Display(SeqList &sq)           //9.输出顺序表  
{
	int i;
	if (IsEmpty(sq))//表为空,不输出  
	{
		return;
	}
	for (i = 0; i<sq.length; i++)//不为空,输出  
	{
		cout << sq.elem[i] << ' ';
	}
	cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
	SeqList H;
	int a[5] = { 1, 2, 3, 4, 5 };
	int x;
	int i;
	CreatList(H, a, 5);
	Insert(H, 6, 6);//将值7在第6号位置插入,Insert(顺序表首地址,数值,位置)  
	Delete(H, 5);//将第5个元素值删除  
	Display(H);//输出顺序表的值  
	system("pause");
	return 0;
}

运行结果是

使用c++实现顺序表:多文件编程,层次清晰,函数有注释 SeqList();//构造函数,存储的元素个数设为0 bool setLength(size_t length);//设置已经存储的元素个数 bool addElement(ElemType element);//把某个元素添加到顺序表末尾 bool addElement(ElemType element , size_t n);//插入一个元素,使其成为第n个元素,其余元素后移 bool delElement();//删除所有的元素 bool delElement(size_t n);//删除第n个元素 bool delElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,把这个元素删除 bool replaceElement(ElemType element , size_t n);//使用一个元素,替换掉第n个元素 bool swapElement(size_t n1 , size_t n2);//把第n1个元素和第n2个元素交换 ElemType* getElement();//得到数组头的指针 ElemType* getElement(size_t n);//得到第n个元素的指针 size_t getLength();//得到存储的元素个数 size_t getMaxSize();//得到顺序表容量 bool showElementDetail();//输出所有的元素细节 bool showElementDetail(size_t n);//输出第n个元素的细节 bool showElementDetail(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,输出元素所有细节 size_t findElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素位置 static int inputAInt(int min = 0,int max = 9,int defaultValue = -1);//从键盘读取,限制为一个min到max间的整数,非法情况返回defaultValue void startControlLoop();//打开控制界面 ~SeqList();//析构函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值