数据结构 顺序线性表

顺序线性表头文件

#pragma once

#include<iostream>

#define ListSize 100

#define DataType int

using namespace std;

 

class SqList

{

public:

void InitList(SqList& L);      //初始化线性表,将长度设置成0

bool ListEmpty(SqList L);      //判断线性表是否为空,为空返回真

int GetElem(SqList L, int i, DataType& e);     //按照序号取值

int LocateElem(SqList L, DataType e);          //查找线性表L中与给定元素e相等的元素。

int InsertList(SqList& L, int i, DataType e);

/*在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0*/

int DeleteElem(SqList& L, int i, DataType& e);

/*将顺序表中的第i个位置删除,并将其值赋值给e*/

int ListLength(SqList L);

void ClearList(SqList& L);

private:

DataType m_list[ListSize];

int m_length;

};

实现

#include<iostream>

#include"Sqlist.h"

using namespace std;

 

void SqList::InitList(SqList& L)

{

L.m_length = 0;    //将线性表的长度置为0

}

 

bool SqList::ListEmpty(SqList L)

{

if (L.m_length)

return false;

else

return true;

}

 

int SqList::GetElem(SqList L, int i, DataType& e)

{

for (int x = 0; x < L.m_length; x++)

{

if (i > L.m_length || i < 1)

{

return -1;

}

e = this->m_list[i - 1];

}

return 1;

}

 

int SqList::LocateElem(SqList L, DataType e)

{

for (int i = 0; i < L.m_length; i++)

{

if (e == L.m_list[i])

{

return i;

}

}

return 0;

}

 

int SqList::InsertList(SqList& L, int i, DataType e)

{

if (i<1 || i>L.m_length + 1)

{

cout<<"插入位置不合法!\n";

return -1;

}

else if (L.m_length >= ListSize)

{

cout<<"顺序表已满,不能插入数据!\n";

return 0;

}

else

{

for (int j = L.m_length; j >= i; j--) //将第i位置以后的元素依次后移

{

L.m_list[j] = L.m_list[j - 1];

}

L.m_list[i - 1] = e; //插入元素到第i个位置

L.m_length += 1; //将顺序表长加1

return 1;

}

return 0;

}

 

int SqList::DeleteElem(SqList& L, int i, DataType& e)

{

if (i < 1||i<L.m_length)

{

cout << "删除位置不合法" << endl;

return 0;

}

if (L.ListEmpty(L))

{

cout << "线性表为空,无法删除" << endl;

return -1;

}

else

{

e = L.m_list[i - 1];

for (int j = i; j < L.m_length; j++)

{

L.m_list[j - 1] = L.m_list[j];

}

L.m_length--;

return 1;

}

}

 

int SqList::ListLength(SqList L)

{

return L.m_length;

}

 

void SqList::ClearList(SqList& L)

{

L.m_length = 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值