顺序存储线性表的C++实现——严蔚敏版《数据结构》

      因为最近在拿严蔚敏版的《数据结构》复习相关知识,所以就通过动手实现来加深理解,在这里与大家分享。话不多说,直接上代码,注释比较详细,就不另外解说了。

     首先是List_Sq.h,这里使用了类模板以及函数模板,便于将该顺序线性表使用在不同的基本数据类型。

#ifndef __List_Sq_H__
#define __List_Sq_H__

#include<iostream>
#include<cstdlib>

using namespace std;

const int LIST_INIT_SIZE = 100; //线性表的初始空间分配量 
const int LIST_INCREMENT = 10;  // 线性表存储空间的分配增量

const int OVER_FLOW = -2; // 内存分配失败状态代码

// 动态分配顺序存储结构的线性表 
template <class T>
struct SqList{
	T *elem; 		// 存储空间基址 
	int length; 	// 当前长度 
	int listsize; 	// 当前分配的存储容量 
};

template <class T>
class List_Sq
{
public:
	void InitList_Sq(SqList<T> &L);				// 构造一个空的线性表L
	void DestroyList_Sq(SqList<T> &L); 			// 销毁线性表L
	bool ClearList_Sq(SqList<T> &L); 			// 将L重置为空表
	bool ListEmpty_Sq(SqList<T> L); 			// 若L为空表,返回true,否则返回false
	int ListLength_Sq(SqList<T> L); 			// 返回L中数据元素的个数
	bool GetElem_Sq(SqList<T> L, int i, T &e);  // 用e返回L中第i个数据元素的值
	int LocateElem_Sq(SqList<T> L, T e, bool(*compare)(T e1, T e2));
	// 返回L中第1个与e满足关系compare()的数据元素的位序。
	// 若这样的数据元素不存在,则返回值为0
	bool PriorElem_Sq(SqList<T> L, T cur_e, T &pre_e);
	// 若cur_e是L中的数据元素,且不是第一个,则用pre_e返回它的前驱
	// 否则操作失败,pre_e无定义
	bool NextElem_Sq(SqList<T> L, T cur_e, T &next_e);
	// 若cur_e是L中的数据元素,且不是最后一个,则用pre_e返回它的后继 
	// 否则操作失败,pre_e无定义		
	bool ListInsert_Sq(SqList<T> &L, int i, T e);
	// 在L中第i个位置之前插入新的数据元素e,L的长度加1
	bool ListDelete_Sq(SqList<T> &L, int i, T &e);
	// 删除L的第i个数据元素,并用e返回其值,L的长度减1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值