第3周实践项目1 顺序表的基本运算
/*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 顺序表的基本运算相关推荐
- 第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值
/* copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源 *完成日期:2017年9月14日 *问题描述:删除元 ...
- 第3周实践项目5 -顺序表的应用 拆分单链表
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: 拆分单链表 叙述: 拆分单链表,有一个带头节点的单链表L={a1, ...
- 第八周实践项目3 顺序串一些算法操作
sqString.h #define MaxSize 100 //最多的字符个数 typedef struct { char data[MaxSize]; //定义可容纳MaxSize个字符的空间in ...
- 第5周实践项目1 顺序栈建立的算法库
main.cpp #include <stdio.h> #include "Sqstack.h" int main() {Elemtype e;SqStack *s;p ...
- 实验题一(实现顺序表各种基本运算的算法)
目的:领会顺序表存储结构和掌握顺序表中各种基本运算算法设计. 内容:编写一个.cpp的程序,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型为 Elemtype char),并在此基础上设 ...
- 【数据结构】:实现顺序表各种基本运算的算法
文章目录 目的 内容 二.详细代码 运行结果 目的 领会顺序表存储结构和掌握顺序表中各种基本运算算法设计. 内容 编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的 ...
- 第3周 实践项目2 建设”顺序表“算法库(可参考为模板)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2 -建设"顺序表算法库" *作 者:邵雪源 ...
- 【数据结构】实验项目:顺序表,也就那么回事
目录 序 嗨,这里是狐狸~~ 简介 顺序表的结构定义: 声明顺序表类型变量: 实验内容: 实验说明 : 实验思路 1. 输入一组整型元素序列(不少于10个),建立顺序表. 2. 在该顺序表中进行顺序 ...
- 第八周实践项目8 稀疏矩阵的三元组表示的实现及应用
#include <stdio.h> #define M 6 #define N 7 #define MaxSize 100 //矩阵中非零元素最多个数 typedef int ElemT ...
最新文章
- mysql select 返回列,是否可以对在mysql SELECT语句中返回列的顺序进行排序?
- 一个很适合用来套用后台的框架
- 创建型模式:单例模式(懒汉+饿汉+双锁校验+内部类+枚举)
- java实现多对多关系的方法_java – 如何在JPA中实现复杂的多对多关系?
- mysql long varchar2_long查询结果转换为varchar2类型
- 身份证号码有效性检测算法 ( js版 转 C#版 )
- java 当前时间格式_JAVA中获取当前系统时间及格式转换
- HTML画笔移出画布停止,html5 canvas画布无法清除
- generatorConfig 指定列的java数据类型
- tomcat升级步骤
- webservers ajax,jQuery AJax调用asp.net webservers的实现代码
- 使用Flume将日志导入OSS
- 程序员新入手MacStudio的装机环境
- linux 查看大文件,Linux上查找最大文件的 3 种方法
- 西藏拉姆拉错:蓝蓝的湖水
- NOIP 模拟题 国际跳棋
- dataset.padded_batch 用法案例
- SQL-小题推荐牛客8题精练版
- ae显示不能稳定链接服务器,ae正在连接到动态链接服务器
- darknetYolov3图片的分类计数、置信度以及输出xmin,xmax,ymin,ymax的结果
热门文章
- ApplicationListener,Game,Screen,Stage,Actor,Group
- Thread.Join()用法的理解
- Android开发小问题集
- 思科:四分之三的物联网项目将以失败告终
- 【python】一个简单的贪婪爬虫
- ASP.NET获得客户端浏览器语言设置(Get the Language setting of browser by ASP.NET)
- Bit-Scalable Deep Hashing with Regularized Similarity Learning for Image Retrieval and Person Re-ide
- 【Deep Learning】MLP识别手写 MNIST数字集
- matelab的安装
- java ajax无刷分页_asp.net+ajax+json来实现无刷新分页功能