线性表——顺序数组seqList的实现 C++

本文主要总结常用的数据结构——线性表之顺序数组,实现其基本的增删查改功能,不涉及完整功能,目的是为了熟悉常用数据结构属性和代码实现底层原理。

一、线性表——顺序数组seqList

1.1线性表定义

从逻辑上来看,线性表就是有n(n>=0)个数据元素a1,a2,…,an组成的有限序列。
对于一个非空的线性表,其逻辑结构特征如下:

  • 有且仅有一个开始结点a1和一个直接后继节点a2,没有直接前驱节点,;
  • 有且仅有一个终止节点an和一个直接前驱节点a*(n-1)*,没有直接后继节点;
  • 其余的内部节点ai (2 <= i <= n-1)都有且仅有一个直接前驱节点a*(i-1)和一个直接后继节点a(i+1)*;
  • 对于同一个线性表,各数据元素ai必须具有相同的数据类型,即同一线性表中各数据元素具有相同的类型,每个数据元素长度相同。

1.2线性表的基本运算

1.2.1基本运算

(1) 初始化(构造一个空的线性表,也就是new或者用堆栈创建一个元素的数组)
(2) 计算表长(线性表节点个数)
(3) 插入节点(插入当前位置,其它元素依次外后移动一位)
(4) 删除节点(删除当前节点元素,其它元素依次往前移动一位)
(5) 查找节点(返回查找到的第一个节点地址)
(6) 修改节点(先查找,然后再替换该位置元素)
简单来说,就是实现顺序表的初始化、元素的增删查改。

1.3线性表结构(顺序表)

图1-1  顺序表结构图
图1-1 顺序表结构图

1.4代码实现

common.h

#pragma once

typedef short int BYTE;
typedef unsigned int WORD32;

Element.h

#pragma once

#include "common.h"

class Element
{
   
public:
	Element();
	Element(BYTE key, WORD32 value);
	~Element();

	BYTE getKey() const;
	WORD32 getValue() const;

private:
	BYTE key;
	WORD32 value;
};

SeqList.h

#pragma once
#include <string>
#include "Element.h"

using namespace std;

class SeqList
{
   
public:
	SeqList(WORD32 capability);
	~SeqList();
	const WORD32 getSize() const; // 返回当前实际元素个数
	const WORD32 getCapability() const; // 返回当前最大容量
	bool add(Element& element); // 加入元素
	bool insert(WORD32 index, Element& element); // 插入元素
	bool remove(WORD32 index); //删除元素
 	Element* find(const WORD32 index) const; // 查找元素,按索引位置
	Element* find(const BYTE key) const; // 按元素关键字查找
	bool repalce(WORD32 index, Element& element); // 修改指引索引位置元素
	void showAllElements() const;

private:
	Element *element; // 指向元素数组指针
	WORD32 size; // 实际元素个数
	WORD32 capability; // 最大容量
};

Element.cpp

#include "Element.h"
#include <iostream>

Element::Element(BYTE key, WORD32 value)
	: key(key), value(value)
{
   
}

Element::Element() : key(0), value(0
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值