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;
}
运行结果是