C/C++数据结构之顺序表的基本操作详解 <附完整操作源码>

顺序表是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以
快速定位第几个元素,中间不允许有空值,插入、删除时需要移动大量元素。
顺序表 的三个要素:
elems 记录存储位置的基地址
分配一段连续的存储空间 size
length 记录实际的元素个数,即顺序表的长度

 

结构体定义

#define MAX_SIZE 100

struct _SqList

{

ElemType *elems; // 顺序表的基地址

int length; // 顺序表的长度

int size; // 顺序表总的空间大小

}

C/C++数据结构之顺序表的基本操作详解 <附完整操作源码>_第1张图片

1.顺序表初始化

C/C++数据结构之顺序表的基本操作详解 <附完整操作源码>_第2张图片

2.添加元素

C/C++数据结构之顺序表的基本操作详解 <附完整操作源码>_第3张图片

3.插入元素

C/C++数据结构之顺序表的基本操作详解 <附完整操作源码>_第4张图片

4.删除元素

 

C/C++数据结构之顺序表的基本操作详解 <附完整操作源码>_第5张图片

 

完整代码:

// 顺序表SqList.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
* Author:See 
* QQ:3492625357
*/

#include 
#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) 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> 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;
}

 

 

你可能感兴趣的:(数据结构与算法,c++,数据结构与算法,顺序表)