/*copyright (t) 2017,烟台大学计算机学院
*All rights reserved.
*文件名称:1.cpp
*作者:邵雪源
*完成日期:2017年9月19日
*版本号:v1.0
*问题描述:用函数实现顺序表的10个基本运算(见下),并用main函数完成调试工作
*输入描述:无
*程序输出:无
*/
#include <iostream>
#include <malloc.h>
#include <cstdio>
#define Maxsize 100
using namespace std;
typedef int Elemtype;          //自定义数据类型
typedef struct list
{Elemtype data[Maxsize];    //存顺序表元素int length;                //存顺序表长度
} Sqlist;
//实现算法的自定义函数以及其他必要的自定义函数
void CreateList(Sqlist *&l,Elemtype a[],int n)    //由a中的n个元素建立顺序表
{int i;l=(Sqlist *)malloc(sizeof(Sqlist));           //分配存储空间for(i=0;i<n;i++)l->data[i]=a[i];                          //存放元素l->length=n;                                  //设置长度
}
void DispList(Sqlist *l)                          //输出线性表
{int i;// if(ListEmpty(l))//    return;for(i=0;i<l->length;i++)printf("%d ",l->data[i]);printf("\n");
}
bool ListEmpty(Sqlist *l)                        //布尔型函数判断顺序表是否为空表
{return (l->length==0);                       //空返回0 非空返回1
}
int ListLength(Sqlist *l)                        //求顺序表长度
{return (l->length);
}
bool GetElem(Sqlist *l,int i,Elemtype &e)        //求顺序表中某个数据元素值
{if(i<1 || i>l->length)                       //i为逻辑序号,注意参数错误的情况return false;                            //参数错误返回falsee=l->data[i-1];return true;                                 //找到指定下标元素返回true
}
int LocateElem(Sqlist *l,Elemtype e)             //按元素值查找顺序表中元素
{int i=0;while(i<l->length && l->data[i]!=e)          //e不是要查找的元素,继续往下遍历i++;if(i>=l->length)return 0;                                //遍历一遍未找到返回falseelsereturn i+1;                              //否则找到返回true
}
bool ListInsert(Sqlist *&l,int i,Elemtype e)     //插入数据元素
{int j;if(i<1 || i>l->length+1 || l->length>=Maxsize)//i为逻辑序号,注意参数错误的情况return false;                             //参数错误返回falsei--;                                          //顺序表逻辑序号转化为物理序号for(j=l->length-1;j>i;j--)l->data[j]=l->data[j-1];                  //"后者覆盖前者"l->data[i]=e;                                 //找到插入位置插入l->length++;return true;
}
bool ListDelete(Sqlist *&l,int i,Elemtype &e)     //删除数据元素
{int j;if(i<1 || i>l->length+1)                      //i为逻辑序号,注意参数错误的情况return false;                             //参数错误返回falsei--;                                          //顺序表逻辑序号转化为物理序号e=l->data[i];                                 //被删除元素for(j=i;j<l->length-1;j++)l->data[j]=l->data[j+1];                  //"后者覆盖前者"l->length--;return true;
}
void InitList(Sqlist *&l)                        //初始化线性表
{l=(Sqlist *)malloc(sizeof(Sqlist));          //分配存储空间l->length=0;                                 //置空线性表,其长度为0
}
void DestroyList(Sqlist *&l)                     //销毁顺序表
{free(l);
}//定义用于驱动测试的main函数
int main()
{Sqlist *l;Elemtype a[10]={1,2,3,4,5,6,7,8,9,10};Elemtype b[5]={5,8,7,4,6};Elemtype e;int loc;CreateList(l,a,10);cout<<"建立的顺序表中各元素为:"<<endl;DispList(l);cout<<"此线性表长度为:"<<ListLength(l)<<endl;if(GetElem(l,3,e))                             //测试在范围内的情形printf("找到了第3个元素值为:%d\n", e);elseprintf("第3个元素超出范围!\n");if(GetElem(l,15,e))                            //测试不在范围内的情形printf("找到了第15个元素值为:%d\n",e);elseprintf("第15个元素超出范围!\n");if((loc=LocateElem(l,8))>0)                    //测试能找到的情形printf("找到了,值为8的元素是第 %d 个\n",loc);elseprintf("值为8的元素木有找到!\n");if((loc=LocateElem(l,17))>0)                 //测试不能找到的情形printf("找到了,值为17的元素是第 %d 个\n",loc);elseprintf("值为17的元素木有找到!\n");DestroyList(l);cout<<"此顺序表被销毁"<<endl;cout<<endl;CreateList(l,b,5);cout<<"建立的顺序表中各元素为:"<<endl;DispList(l);cout<<"此线性表长度为:"<<ListLength(l)<<endl<<endl;ListInsert(l,4,2);cout<<"在4位置插入元素2后的顺序表为:"<<endl;DispList(l);ListDelete(l,2,e);cout<<"在2位置删除元素8后的顺序表为:"<<endl;DispList(l);DestroyList(l);cout<<"此顺序表被销毁"<<endl;cout<<endl;return 0;
}                   //移动奇数

第3周实践项目1 顺序表的基本运算相关推荐

  1. 第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值

    /* copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源 *完成日期:2017年9月14日 *问题描述:删除元 ...

  2. 第3周实践项目5 -顺序表的应用 拆分单链表

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: 拆分单链表 叙述: 拆分单链表,有一个带头节点的单链表L={a1, ...

  3. 第八周实践项目3 顺序串一些算法操作

    sqString.h #define MaxSize 100 //最多的字符个数 typedef struct { char data[MaxSize]; //定义可容纳MaxSize个字符的空间in ...

  4. 第5周实践项目1 顺序栈建立的算法库

    main.cpp #include <stdio.h> #include "Sqstack.h" int main() {Elemtype e;SqStack *s;p ...

  5. 实验题一(实现顺序表各种基本运算的算法)

    目的:领会顺序表存储结构和掌握顺序表中各种基本运算算法设计. 内容:编写一个.cpp的程序,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型为 Elemtype char),并在此基础上设 ...

  6. 【数据结构】:实现顺序表各种基本运算的算法

    文章目录 目的 内容 二.详细代码 运行结果 目的 领会顺序表存储结构和掌握顺序表中各种基本运算算法设计. 内容 编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的 ...

  7. 第3周 实践项目2 建设”顺序表“算法库(可参考为模板)

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2 -建设"顺序表算法库" *作 者:邵雪源 ...

  8. 【数据结构】实验项目:顺序表,也就那么回事

    目录 序 嗨,这里是狐狸~~ 简介 顺序表的结构定义: 声明顺序表类型变量: 实验内容: 实验说明 : 实验思路 1. 输入一组整型元素序列(不少于10个),建立顺序表. 2.  在该顺序表中进行顺序 ...

  9. 第八周实践项目8 稀疏矩阵的三元组表示的实现及应用

    #include <stdio.h> #define M 6 #define N 7 #define MaxSize 100 //矩阵中非零元素最多个数 typedef int ElemT ...

最新文章

  1. mysql select 返回列,是否可以对在mysql SELECT语句中返回列的顺序进行排序?
  2. 一个很适合用来套用后台的框架
  3. 创建型模式:单例模式(懒汉+饿汉+双锁校验+内部类+枚举)
  4. java实现多对多关系的方法_java – 如何在JPA中实现复杂的多对多关系?
  5. mysql long varchar2_long查询结果转换为varchar2类型
  6. 身份证号码有效性检测算法 ( js版 转 C#版 )
  7. java 当前时间格式_JAVA中获取当前系统时间及格式转换
  8. HTML画笔移出画布停止,html5 canvas画布无法清除
  9. generatorConfig 指定列的java数据类型
  10. tomcat升级步骤
  11. webservers ajax,jQuery AJax调用asp.net webservers的实现代码
  12. 使用Flume将日志导入OSS
  13. 程序员新入手MacStudio的装机环境
  14. linux 查看大文件,Linux上查找最大文件的 3 种方法
  15. 西藏拉姆拉错:蓝蓝的湖水
  16. NOIP 模拟题 国际跳棋
  17. dataset.padded_batch 用法案例
  18. SQL-小题推荐牛客8题精练版
  19. ae显示不能稳定链接服务器,ae正在连接到动态链接服务器
  20. darknetYolov3图片的分类计数、置信度以及输出xmin,xmax,ymin,ymax的结果

热门文章

  1. ApplicationListener,Game,Screen,Stage,Actor,Group
  2. Thread.Join()用法的理解
  3. Android开发小问题集
  4. 思科:四分之三的物联网项目将以失败告终
  5. 【python】一个简单的贪婪爬虫
  6. ASP.NET获得客户端浏览器语言设置(Get the Language setting of browser by ASP.NET)
  7. Bit-Scalable Deep Hashing with Regularized Similarity Learning for Image Retrieval and Person Re-ide
  8. 【Deep Learning】MLP识别手写 MNIST数字集
  9. matelab的安装
  10. java ajax无刷分页_asp.net+ajax+json来实现无刷新分页功能