线性表顺序存储结构

线性表顺序存储结构

所用的教材是:《数据结构与算法》第四版 廖明宏 郭福顺 张岩 李秀坤老师编著的

线性结构中线性表分为三种:数组存储结构、链式存储结构以及游标存储结构 这一部分先讲解线性表的数组存储结构:

1、线性表的数组存储结构:

using namespace std;

template

struct node{

T *ele;

int lengthl, sizel;

};

2、c++模板类实现线性表的基本操作

template

class arrayl

{

public:

arrayl();

~arrayl();

bool isNull();

bool isFull();

int getLength();

void getEle(int);

void getL(T);

void insertl(T, int);

void deletel(int);

void displayl();

private:

node *p;

};

3、各个函数的实现

template

arrayl::arrayl() //构造函数 //析构函数 //判断是否为空 判断是否满 //返回当前线性表的实际长度 //某个位置的节点值 //此值在线性表中第一个位置 //插入到某个位置 //删除某个位置 //打印 //

p = new node;

p->sizel = MAX;

p->ele = new T[p->sizel];

p->lengthl = 0;

}

template

arrayl::~arrayl(){

delete[]p->ele;

}

template

bool arrayl::isNull()

{

if (p->lengthl>0)

return false;

else return true;

}

template

bool arrayl::isFull()

if (p->lengthl == p->sizel)

return true;

else return false;

}

template

int arrayl::getLength()

{

return p->lengthl;

}

template

void arrayl::getEle(int x)

{

if(x>p->lengthl||x

cout

else {

coutele[x]

}

}

template

void arrayl::getL(T t)

{

int temp=0;

for(int i=0;ilengthl;i++)

{

if(t==p->ele[i])

{

temp=1;

cout

break;

}

}

if(temp==0) cout

}

template

void arrayl::insertl(T t, int x) //插入到排在x处

{

if (isFull()) cout

else {

if (x>p->lengthl) cout

else{

p->ele[x] = t;

for (int i = p->lengthl - 1; i > x; i--)

p->ele[i + 1] = p->ele[i];

p->lengthl++;

}

}

}

template

void arrayl::deletel(int x) //删除第x个节点

{

if (x>p->lengthl || x

else {

for (int j = x - 1; jlengthl; j++)

p->ele[j] = p->ele[j + 1];

p->lengthl--;

}

}

template

void arrayl::displayl()

{

if (isNull()) cout

else {

for (int j = 0; jlengthl; j++)

cout ele[j]

cout

}

}

4、主函数main

int main()

{

arrayl newl;

int t, x;

for (int i = 0; i

newl.insertl(i, i);

cout

cout

cin>>x;

newl.getEle(x);

cout

cin>>t;

newl.getL(t);

cout

cin >> t >> x;

newl.insertl(t, x);

cout

cout

cin >> x;

newl.deletel(x);

cout

system("pause");

return 0;

}

5、运行结果

程序源代码: #include

#define MAX 100 using namespace std; template

struct node{ T *ele;

int lengthl, sizel; };

template class arrayl {

public:

arrayl(); ~arrayl(); bool isNull(); bool isFull(); int getLength(); void getEle(int); void getL(T); void insertl(T, int); void deletel(int); void displayl(); private:

node *p; };

template

arrayl::arrayl() { //构造函数 //析构函数 //判断是否为空 判断是否满 //返回当前线性表的实际长度 //某个位置的节点值 //此值在线性表中第一个位置 //插入到某个位置 //删除某个位置 //打印 //

p = new node;

p->sizel = MAX;

p->ele = new T[p->sizel];

p->lengthl = 0;

}

template

arrayl::~arrayl(){

delete[]p->ele;

}

template

bool arrayl::isNull()

{

if (p->lengthl>0)

return false;

else return true;

}

template

bool arrayl::isFull()

{

if (p->lengthl == p->sizel)

return true;

else return false;

}

template

int arrayl::getLength()

{

return p->lengthl;

}

template

void arrayl::getEle(int x)

{

if(x>p->lengthl||x

cout

else {

coutele[x]

}

}

template

void arrayl::getL(T t)

{

int temp=0;

for(int i=0;ilengthl;i++)

{

if(t==p->ele[i])

{

temp=1;

cout

break;

}

}

if(temp==0) cout

}

template

void arrayl::insertl(T t, int x) //插入到排在x处

{

if (isFull()) cout

else {

if (x>p->lengthl) cout

else{

p->ele[x] = t;

for (int i = p->lengthl - 1; i > x; i--)

p->ele[i + 1] = p->ele[i];

p->lengthl++;

}

}

}

template

void arrayl::deletel(int x) //删除第x个节点

{

if (x>p->lengthl || x

else {

for (int j = x - 1; jlengthl; j++)

p->ele[j] = p->ele[j + 1];

p->lengthl--;

}

}

template

void arrayl::displayl()

{

if (isNull()) cout

else {

for (int j = 0; jlengthl; j++)

cout ele[j]

cout

}

}

int main()

{

arrayl newl;

int t, x;

for (int i = 0; i

newl.insertl(i, i);

cout

cout

cin>>x;

newl.getEle(x);

cout

cin>>t;

newl.getL(t);

cout

cin >> t >> x;

newl.insertl(t, x);

cout

cout

cin >> x;

newl.deletel(x);

cout

system("pause");

return 0;

}

欢迎访问我的博客:http://blog.sina.com.cn/u/5066584704

线性表顺序存储结构

所用的教材是:《数据结构与算法》第四版 廖明宏 郭福顺 张岩 李秀坤老师编著的

线性结构中线性表分为三种:数组存储结构、链式存储结构以及游标存储结构 这一部分先讲解线性表的数组存储结构:

1、线性表的数组存储结构:

using namespace std;

template

struct node{

T *ele;

int lengthl, sizel;

};

2、c++模板类实现线性表的基本操作

template

class arrayl

{

public:

arrayl();

~arrayl();

bool isNull();

bool isFull();

int getLength();

void getEle(int);

void getL(T);

void insertl(T, int);

void deletel(int);

void displayl();

private:

node *p;

};

3、各个函数的实现

template

arrayl::arrayl() //构造函数 //析构函数 //判断是否为空 判断是否满 //返回当前线性表的实际长度 //某个位置的节点值 //此值在线性表中第一个位置 //插入到某个位置 //删除某个位置 //打印 //

p = new node;

p->sizel = MAX;

p->ele = new T[p->sizel];

p->lengthl = 0;

}

template

arrayl::~arrayl(){

delete[]p->ele;

}

template

bool arrayl::isNull()

{

if (p->lengthl>0)

return false;

else return true;

}

template

bool arrayl::isFull()

if (p->lengthl == p->sizel)

return true;

else return false;

}

template

int arrayl::getLength()

{

return p->lengthl;

}

template

void arrayl::getEle(int x)

{

if(x>p->lengthl||x

cout

else {

coutele[x]

}

}

template

void arrayl::getL(T t)

{

int temp=0;

for(int i=0;ilengthl;i++)

{

if(t==p->ele[i])

{

temp=1;

cout

break;

}

}

if(temp==0) cout

}

template

void arrayl::insertl(T t, int x) //插入到排在x处

{

if (isFull()) cout

else {

if (x>p->lengthl) cout

else{

p->ele[x] = t;

for (int i = p->lengthl - 1; i > x; i--)

p->ele[i + 1] = p->ele[i];

p->lengthl++;

}

}

}

template

void arrayl::deletel(int x) //删除第x个节点

{

if (x>p->lengthl || x

else {

for (int j = x - 1; jlengthl; j++)

p->ele[j] = p->ele[j + 1];

p->lengthl--;

}

}

template

void arrayl::displayl()

{

if (isNull()) cout

else {

for (int j = 0; jlengthl; j++)

cout ele[j]

cout

}

}

4、主函数main

int main()

{

arrayl newl;

int t, x;

for (int i = 0; i

newl.insertl(i, i);

cout

cout

cin>>x;

newl.getEle(x);

cout

cin>>t;

newl.getL(t);

cout

cin >> t >> x;

newl.insertl(t, x);

cout

cout

cin >> x;

newl.deletel(x);

cout

system("pause");

return 0;

}

5、运行结果

程序源代码: #include

#define MAX 100 using namespace std; template

struct node{ T *ele;

int lengthl, sizel; };

template class arrayl {

public:

arrayl(); ~arrayl(); bool isNull(); bool isFull(); int getLength(); void getEle(int); void getL(T); void insertl(T, int); void deletel(int); void displayl(); private:

node *p; };

template

arrayl::arrayl() { //构造函数 //析构函数 //判断是否为空 判断是否满 //返回当前线性表的实际长度 //某个位置的节点值 //此值在线性表中第一个位置 //插入到某个位置 //删除某个位置 //打印 //

p = new node;

p->sizel = MAX;

p->ele = new T[p->sizel];

p->lengthl = 0;

}

template

arrayl::~arrayl(){

delete[]p->ele;

}

template

bool arrayl::isNull()

{

if (p->lengthl>0)

return false;

else return true;

}

template

bool arrayl::isFull()

{

if (p->lengthl == p->sizel)

return true;

else return false;

}

template

int arrayl::getLength()

{

return p->lengthl;

}

template

void arrayl::getEle(int x)

{

if(x>p->lengthl||x

cout

else {

coutele[x]

}

}

template

void arrayl::getL(T t)

{

int temp=0;

for(int i=0;ilengthl;i++)

{

if(t==p->ele[i])

{

temp=1;

cout

break;

}

}

if(temp==0) cout

}

template

void arrayl::insertl(T t, int x) //插入到排在x处

{

if (isFull()) cout

else {

if (x>p->lengthl) cout

else{

p->ele[x] = t;

for (int i = p->lengthl - 1; i > x; i--)

p->ele[i + 1] = p->ele[i];

p->lengthl++;

}

}

}

template

void arrayl::deletel(int x) //删除第x个节点

{

if (x>p->lengthl || x

else {

for (int j = x - 1; jlengthl; j++)

p->ele[j] = p->ele[j + 1];

p->lengthl--;

}

}

template

void arrayl::displayl()

{

if (isNull()) cout

else {

for (int j = 0; jlengthl; j++)

cout ele[j]

cout

}

}

int main()

{

arrayl newl;

int t, x;

for (int i = 0; i

newl.insertl(i, i);

cout

cout

cin>>x;

newl.getEle(x);

cout

cin>>t;

newl.getL(t);

cout

cin >> t >> x;

newl.insertl(t, x);

cout

cout

cin >> x;

newl.deletel(x);

cout

system("pause");

return 0;

}

欢迎访问我的博客:http://blog.sina.com.cn/u/5066584704


相关文章

  • 考点1:数据结构与算法
  • A )所谓算法就是计算方法 B )程序可以作为算法的一种描述方法 C )算法设计只需考虑得到计算结果 D )算法设计可以忽略算法的运算时间 题目解析:算法是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程, ...查看


  • 数据结构中的名词解释
  • 本章主要介绍了如下一些基本概念:  数据结构:数据结构是研究数据元素之间抽象化的相互关系和这种关系在计算机中 的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结 ...查看


  • 数据结构第2章-答案
  • 一.填空题 01.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序存储结构. 02.线性表L=(a1,a2, -,an )用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均 ...查看


  • 2014黑龙江省数据结构考试题库
  • 1.广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D ). A) (G) B) (D) C) C D) D 2.若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接 ...查看


  • 2014西藏自治区数据结构考试题库
  • 1.已知广义表L=((x,y,z),a,(u,t,w)),从L 表中取出原子项t 的操作是( D ). A) Head(Head(Tail(Tail(L)))) B) Tail(Head(Head(Tail(L)))) C) Head(Ta ...查看


  • 计算机二级基础知识选择题
  • 选择题 (1)下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止D. 以上三种描述都不对 (2)以下数据结构中不属 ...查看


  • 线性表顺序存储结构上的基本运算
  • 实验项目名称: 线性表的顺序存储结构上的基本运算 (所属课程: 数据结构--用C 语言描述 ) 院 系:计算机科学与信息工程学院 专业班级:网络工程 姓 名:000000 学 号:0000000000 实验日期:2016.10.20 实验地 ...查看


  • 计算机二级考试复习资料
  • 站长提醒广大考生:下 面的138道题目,在二级考试中命中率极高. 一.选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须 ...查看


  • 二级access公共基础历年真题解析
  • 全国计算机等级考试二级公共基础历年真题解析  2010年9月 选择题:(1)下列叙述中正确的是( ) A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C)线性 ...查看


  • 数据结构C语言版线性表的动态分配顺序存储结构表示和实现文库
  • 数据结构C语言版 线性表的动态分配顺序存储结构表示和实现文库.txt爱空空情空空,自己流浪在街中:人空空钱空空,单身苦命在打工:事空空业空空,想来想去就发疯:碗空空盆空空,生活所迫不轻松.总之,四大皆空!/* 数据结构C语言版 线性表的动态 ...查看


热门内容