顺序表是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以
快速定位第几个元素,中间不允许有空值,插入、删除时需要移动大量元素。
顺序表
的三个要素:
用
elems
记录存储位置的基地址
分配一段连续的存储空间
size
用
length
记录实际的元素个数,即顺序表的长度
结构体定义
#define MAX_SIZE 100
struct _SqList
{
ElemType *elems; // 顺序表的基地址
int length; // 顺序表的长度
int size; // 顺序表总的空间大小
}
1.顺序表初始化
2.添加元素
3.插入元素
4.删除元素
完整代码:
-
// 顺序表SqList.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
-
//
-
/*
-
* Author:See
-
* QQ:3492625357
-
*/
-
-
#include <iostream>
-
#define MAX_SIZE 100
-
using
namespace
std;
-
-
typedef
struct _SqList //顺序表的数据结构
-
{
-
int *elem;
-
int length;
-
int size;
-
}SqList;
-
-
bool InitList(SqList &L)//初始化空表
-
{
-
L.elem =
new
int[MAX_SIZE];
-
if (!L.elem)
-
{
-
return
false;
-
}
-
L.length =
0;
-
L.size = MAX_SIZE;
-
return
true;
-
}
-
-
void PrintList(SqList L)//输出表内容
-
{
-
cout <<
"顺序表存储空间大小: " << L.size <<
" , " <<
"顺序表长度: " << L.length <<
endl;
-
cout <<
"顺序表的内容为:" <<
endl;
-
for (
int i=
0;i<L.length;i++)
-
{
-
cout << L.elem[i]<<
" ";
-
}
-
cout <<
endl;
-
}
-
-
bool ListAppend(SqList &L, int e) //添加元素
-
{
-
if (L.length==L.size)
-
{
-
cout <<
"顺序表存储空间已满" <<
endl;
-
return
false;
-
}
-
L.elem[L.length] = e;
-
L.length++;
-
return
true;
-
}
-
-
bool ListInsert(SqList &L, int i, int e)//插入元素
-
{
-
if (i <=
0 || i > L.length)
return
false;
-
if (L.length == L.size)
return
false;
-
-
for (
int k=L.length
-1;k>=i
-1;k--)
-
{
-
L.elem[k +
1] = L.elem[k];
-
}
-
-
L.elem[i
-1] = e;
-
L.length++;
-
return
true;
-
}
-
-
bool ListDelete(SqList &L, int i)//删除元素
-
{
-
if (i <
0 || i>L.length)
return
false;
-
if (i == L.length)
-
{
-
L.length--;
-
return
true;
-
}
-
-
for (
int k=i
-1;k<L.length
-1;k++)
-
{
-
L.elem[k] = L.elem[k +
1];
-
}
-
L.length--;
-
return
true;
-
}
-
-
void ListDestroy(SqList &L)//销毁顺序表
-
{
-
if (L.elem)
-
{
-
delete [] L.elem;
-
L.length =
0;
-
L.size =
0;
-
}
-
}
-
int main()
-
{
-
//1.初始化链表
-
SqList L;
-
if (InitList(L))
-
{
-
cout <<
"初始化顺序表成功!"<<
endl;
-
}
-
else
return
-1;
-
-
//2.添加元素
-
int count;
-
int value;
-
cout <<
"请输入你要添加的元素个数" <<
endl;
-
cin >> count;
-
cout <<
"请依次输入你要添加的元素值" <<
endl;
-
while (count--)
-
{
-
cin >> value;
-
ListAppend(L, value);
-
}
-
PrintList(L);
-
//3.插入元素
-
int pos;
-
cout <<
"请输入你要插入的元素位置: " <<
endl;
-
cin >> pos;
-
cout <<
"请输入你要插入的元素值: " <<
endl;
-
cin >> value;
-
ListInsert(L, pos, value);
-
PrintList(L);
-
-
//4.删除元素
-
cout <<
"请输入你要删除的元素位置" <<
endl;
-
cin >> pos;
-
ListDelete(L, pos);
-
PrintList(L);
-
-
system(
"pause");
-
return
0;
-
}
转载:https://blog.csdn.net/weixin_40582034/article/details/116949331
查看评论