哇 好久没更博客了  因为从上次更文到现在为止,我一直在学c#,然后也觉得没什么太大的东西想写在博客上,

总之这次就简单的传一下学校安排的数据结构的实验,我还是学生,是新手,希望能继续跟大家一起学习,

共勉,有错望指出,这样就可以不断学习,谢谢。

*******这次实验是第一个实验,名称是线性表操作,我就结合我所学的写一下。********

*******线性表的概念我就不多提了,直接上代码,简单粗暴。********

*******线性表操作我写有了 初始化 判断为空 判断为满 插入 追加 删除 销毁 遍历等操作********

代码如下:

# include<iostream>
# include<stdlib.h>
using namespace std;

typedef struct Arr
{
int * pBase; //存储空间的基地址
int len; //当前顺序表所能容纳的最大长度
int cnt; //当前顺序表的有效长度
} Shun;

void csh(Shun & pArr,int len);//功能:初始化顺序表
bool append(Shun & pArr,int val);//功能:往顺序表中追加元素
bool isempty(Shun & pArr);//功能:判断顺序表是否为空
bool isfull(Shun & pArr);//功能:判断顺序表是否为满
bool Insert(Shun & pArr,int pos,int val);//功能:在指定位置插入一个元素
void Show(Shun & pArr);//功能:遍历整个顺序表并打印
bool Delete(Shun & pArr,int pos);//功能:删除顺序表指定位置的元素
bool xh(Shun & pArr);//功能:销毁顺序表

int main(void)
{
Shun biao; //声明一个顺序表
csh(biao,10); //初始化该顺序表并赋予10单位的长度
cout<<"往顺序表里追加(增加)5个元素,追加后的结果如以下所示:"<<endl;
append(biao,1);
append(biao,5);
append(biao,87);
append(biao,12);
append(biao,100);
Show(biao);
cout<<"删除第3个元素,删除后的结果如以下所示:"<<endl;
Delete(biao,3);
Show(biao);
cout<<"往第2个位置插入一个值“520”,插入后的结果如以下所示:"<<endl;
Insert(biao,2,520);
Show(biao);
if(xh(biao))
cout<<"已销毁成功!!"<<endl;
else
cout<<"销毁出错!!"<<endl;
return 0;
}

void csh(Shun & pArr,int len)
{
pArr.pBase = new int[len];
if(!pArr.pBase)
exit(-1);
pArr.len=len;
pArr.cnt=0;
}

bool isempty(Shun & pArr)
{
if(0==pArr.cnt)
return true;
else
return false;
}

bool isfull(Shun & pArr)
{
if(pArr.len==pArr.cnt)
return true;
else
return false;
}

void Show(Shun & pArr)
{
if(isempty(pArr))
cout<<"顺序表为空!!"<<endl;
else
{
for(int i=0; i<pArr.cnt; i++)
{
cout<<pArr.pBase[i]<<" ";
}
cout<<endl;
}
}

bool append(Shun & pArr,int val)
{
if(isfull(pArr))
return false;
else
{
pArr.pBase[pArr.cnt++]=val;
return true;
}
}

bool Insert(Shun & pArr,int pos,int val)
{
if(isfull(pArr))
return false;
if(pos<1||pos>pArr.cnt+1)
return false;
if(pos<=pArr.cnt)
{
for(int i=pArr.cnt-1; i>=pos-1; i--)
{
pArr.pBase[i+1]=pArr.pBase[i];
}
}
pArr.pBase[pos-1]=val;
pArr.cnt++;
return true;
}

bool Delete(Shun & pArr,int pos)
{
if(isempty(pArr))
return false;
if(pos<0||pos>pArr.cnt)
return false;
for(int i=pos; i<pArr.cnt; i++)
{
pArr.pBase[i-1]=pArr.pBase[i];
}
pArr.cnt--;
return true;
}

bool xh(Shun & pArr)
{
if(pArr.pBase==NULL)
return false;
delete pArr.pBase;
pArr.pBase=NULL;
return true;
}

效果图如下:

******共勉******

c++简单编写线性表(实验)的更多相关文章

  1. c语言描述简单的线性表,获取元素,删除元素,

    //定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...

  2. C++编程练习(1)----“实现简单的线性表的顺序存储结构“

    线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include< ...

  3. C++编程练习(2)----“实现简单的线性表的链式存储结构“

    单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 对于查找操作,单链表的时间复杂度为O(n). 对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1). 单链表不需要分配存储 ...

  4. 线性表的顺序存储结构——java

    线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...

  5. javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现

    线性表(linear list)是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成. 其中: 数据元素的个数n定义为 ...

  6. 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)

    /* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...

  7. 【线性表基础】基于线性表的简单算法【Java版】

    本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeR ...

  8. c++实验3 链式存储线性表

    1.线性表链式存储结构及基本操作算法实现 (1)单链表存储结构类的定义: #include <iostream> using namespace std; template <cla ...

  9. c++实验2 顺序存储线性表

    线性表顺序存储 实现了动态数组的增删改查  前驱后继  A=AUB 动态数组右移 (1)顺序表存储结构的定义(类的声明): class SeqList { protected: DataType *l ...

随机推荐

  1. jsoup从表单中取数据

    表单的格式如下 <td>user</td> <td>cc</td> </tr> <tr> <td>pass</ ...

  2. 简单Spring+Struts2+Hibernate框架搭建

    使用Maven+Spring+Struts2+Hibernate整合 pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0&q ...

  3. windows下 sbulime text 安装less2css踩的几个坑

    sublime 就不介绍了,less2css 是一个安装在sublime上的插件,可以让你书写less后自动生成css文件,而且还可以提示less的语法错误. 搜了一下相关的教程,很多都写的不全,按照 ...

  4. Python函数篇:装饰器

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...

  5. Python连接Oracle数据库

    今天使用Python连接数据库,连接没有问题,就是中文显示乱码,网上找了很多解决方案, 最后选择使用这个 #!/usr/bin/env python # -*- coding:utf-8 -*- #A ...

  6. 我是如何理解Android的Handler模型_3

    AsyncTask则相当于现代化的电话系统,接线员的功能被完全封装了. 对于上例,新建更新TextView的类并继承AsyncTack类,如下: class UpdataTV extends Asyn ...

  7. C#模拟登录总结

    /// <summary>  登录        /// </summary>        /// <param name="url">< ...

  8. vim如何显示行号

    在 vim 里执行(在普通模式下直接按冒号,并输入下面的命令 :set number 回车后就可以显示行号了,但重启 vim 后又会恢复默认的设置. 要想每次进入 vim 都显示行号就需要配置 vim ...

  9. jmockit学习

    下图为jmockit 类图.在我们编写代码时几乎都会用到Expectations(期望)和Verifications(校验),二者均继承自Invacations. 常会用到的注解有:@Mocked @ ...

  10. JS中JSON对象的定义和取值

    1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任 ...