list c++template

以一个现成的模板实现了线性表的顺序结构实现,VC6.0调试OK

请大家以开源的方式来完善这个算法 ,以跟贴方式来添加代码

请大家往这个下面继续添加完整的可以运行的线性表的顺序结构实现代码

/*

线性表的顺序结构实现,数组C++实现法,VC调试OK
线性表可以用顺序结构(是用数组线性表来实现)来实现,也可以用链式结构来实现。
我们以顺序结构为例:
 线性表的基本的操作:
(1)创建线性表
(2)初始化线性表  SeqList()
(3)插入元素   Insert(Type& x ,int i)
(4)删除元素   Remove(Type& x) 
(5)查找元素   
按位置查找对象  Get(int i)
按对象查找位置  Find(Type& x)
(6)计算表长度  Length();

扩展功能:
顺序表满判断  IsFull()
顺序表空判断  IsEmpty()  
输出顺序表的数据 PrintList()
输入顺序表的数据 InputList()
判断x是否在表中  IsIn(Type& x)
寻找x的后继   Next(Type& x)
寻找x的前驱   Prior(Type& x)
合并两个数组  Union(SeqList<Type>& LA,SeqList<Type>& LB)
求两个数组的交集


注意:
(1)插入元素时要把插入位置后的所有元素“从后往前”各向后移动一个位置。
(2)删除元素时要把删除位置后的所有元素“从前往后”各向前移动一个位置。

*/
//SeqList.h
#ifndef SEQLIST_H
#define SEQLIST_H

template< class Type> class SeqList
{
public: 
SeqList(int MaxSize=6); //构造函数定义和实现 
~SeqList() {delete []data; }  //析构函数定义和实现 
int Length() const {return last+1;} //计算表长度定义和实现 
Type Get(int i)            //取第i个元素的值
{ if (i<0||i>last)
  cerr<<"out of range...";
 else
 return data[i];
}
int Find(Type& x) const;   //定位函数:找x在表中的位置
int Insert(Type& x ,int i);   //插入x在表中第i个位置处 
int Remove(Type& x);    //删除x
//新添加功能
int Next(Type& x);     //寻找x的后继 
int Prior(Type& x);     //寻找x的前驱 
int IsEmpty() {return last==-1;}   //判断顺序表是否为空,空则返回1;否则返回0 
int IsFull() {return last==MaxSize-1;}   //判断顺序表满否,满则返回1;否则返回0 
int IsIn(Type& x);     //判断x是否在表中 
void Union(SeqList<Type>& LA,SeqList<Type>& LB);  //合并LA,LB,重复元素只留一下 
void Intersection(SeqList<Type>& LA,SeqList<Type>& LB); //求LA,LB中的共有元素 
void PrintList();     //输出顺序表的数据 
void InputList();     //输入顺序表的数据

private: 
Type* data;       //存放顺序表的数组 
int MaxSize;      //顺序表最大可容纳项数 
int last;       //顺序表当前是已存表项的最后位置
};
//构造函数,通过描写参数sz定义数组的长度。 
template <class Type> SeqList<Type>::SeqList(int sz)
{
 if(sz>0)
  MaxSize=sz;
 else
  MaxSize=6;
 last=MaxSize - 1;
 data=new Type[MaxSize];

}

 

//定位,找x在表中位置 ,若查找成功,函数 返回表项的位置,否则函数返回-1 
template <class Type> int SeqList<Type>::Find(Type& x) const

int i=0; 
while(i<=last&&data[i]!=x)  
i++; 
if(i>last)  
return -1; 
else  
return i;
}

//判断x是否在表中
template <class Type> int SeqList<Type>::IsIn(Type& x)

int i=0,found=0; 
while(i<==last&&!found)  
if(data[i]!=x)   
i++;  
else   
found=1; 
return found;}

//插入x在表中第i个位置处。函数返回插入是否成功的信息,若为0则插入不成功。
template <class Type> int SeqList<Type>::Insert(Type& x,int i)

if(i<0||i>last+1||last==MaxSize-1) 
return 0; 
else 
{
last++;  
for(int j=last;j>i;j--)   
data[j]=data[j-1];  
data[i]=x;  
return 1; }
}
template <class Type> int SeqList<Type>::Remove(Type& x)
{
int i=Find(x); 
if(i>=0) 
{  
last--;  
for(int j=i;j<=last;j++)   
data[j]=data[j+1];  
return 1; 

return 0;
}
//寻找x的后继数据
template <class Type> int SeqList<Type>::Next(Type& x)

if(i>=0&&i<last)  
 return i+1; 
else   
 return -1;
}
//寻找x的前驱数据
template <class Type> int SeqList<Type>::Prior(Type& x)

int i=Find(x); 
if(i>0&&i<=last)
 return i-1; 
else   
 return -1;
}

//合并顺序表LA与LB,重复元素只留一下。这个值得深入研究
template <class Type> void SeqList<Type>::Union(SeqList<Type>& LA,SeqList<Type>& LB)
{  
int n=LA.Length(); 
int m=LB.Length(); 
for(int i=0;i<m;i++) 
 {  
 Type x=LB.Get(i);  
 int k=LA.Find(x);  
 if(k==-1)  
  {   
   LA.Insert(n+1,x);   
   n++;  
  } 
 }
}
//求顺序表LA与LB中的共有元素,其实也是寻找交集元素
template <class Type> void SeqList<Type>::Intersection(SeqList<Type> &LA,SeqList<Type>& LB)

int n=LA.Length(); 
int m=LB.Length(); 
int i=0; 
while(i<n) 
 {  
 Type x=LA.Get(i);  
 int k=LB.Find(x);  
 if(-1==k)  
 {
  LA.Remove(x);   
  n--;  
 }  
 else   
  i++; 
 }
}

//自己写的输出数据方法 
template <class Type> void SeqList<Type>::PrintList()
{
int l=Length()-1; 
for(int i=0;i<l;i++)  
cout<<"list"<<i<<"= "<<data[i]<<endl;;
}
//自己写的输入数据方法 
template <class Type> void SeqList<Type>::InputList()

int l=Length()-1; 
for(int i=0;i<l;i++) 
{
cout<<"enter data["<<i<<"]:";  
cin>>data[i];  
}}
#endif

//调用程序

//seqlist.cpp
/* 测试主程序 * * - */
#include <iostream.h>
#include "SeqList.h"
//const defaultSize=8;
void main()
{
SeqList<int> Intseqlist(8);  
cout<<"Intseqlist.length:"<<Intseqlist.Length()<<endl; 
cout<<"未初始化的数据是没有规则的如下:"<<endl;  
Intseqlist.PrintList();  

cout<<"输入int到数组:"<<endl;  
Intseqlist.InputList(); 

cout<<"新的数据:"<<endl;
Intseqlist.PrintList();

//add check get(x) code
int tv;
cout<<"Get(x):enter a int:";
cin>>tv;
cout<<"get(x)="<<Intseqlist.Get(tv)<<endl;

//请各位多写测试代码,争取把上面的类的功能都用一次
//这就是一个简单的程序测试工程师的一部分工作内容

}

//欢迎大家从这个线性表的数组实现代码中更加完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊composer.lock

composer.lock 即锁定文件 其中会存在项目中所有的依赖包&#xff0c;方便协同合作时都得到同样的以来版本 composer install 命令从当前目录读取 composer.json 文件&#xff0c;处理依赖关系&#xff0c;并把依赖安装到 vendor 目录下。 如果当前目录下存在 composer.lock 文…

如何保证MongoDB的安全性?

上周写了个简短的新闻《MongoDB裸奔&#xff0c;2亿国人求职简历泄漏&#xff01;》&#xff1a; 根据安全站点HackenProof的报告&#xff0c;由于MongoDB数据库没有采取任何安全保护措施&#xff0c;导致共计202,730,434份国人求职简历泄漏。然后很多人评论说MongoDB躺枪了。 …

LXC是什么

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。Linux Container容器是一种内核虚拟化技术&#xff0c;可以提供轻量级的虚拟化&#xff0c;以便隔离进程和资源。LXC为Linux Container的简…

C++ 标准库 vector list map使用方法

[cpp] view plaincopyList&#xff08;链表&#xff09; List将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除&#xff0c;但是随机访问却比较慢.list对象函数 assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器…

导航守卫

导航守卫 to 准备跳转到哪个页面 from 从哪个页面中离开 next 函数 全局守卫 router.beforeEach((to,from,next) > {if(to.path /login || to.path /register){    next();}else{    alert(先登录)    next(/login)} }) 组件守卫 data () {  return{   …

Django中使用Pagination的分页范例源码

将做工程过程重要的内容做个珍藏&#xff0c;下面代码内容是关于Django中使用Pagination的分页范例的代码。 from django.core.paginator import Paginatorobjects [john, paul, george, ringo]p Paginator(objects, 2) p.count4p.num_pages2p.page_range[1, 2] page1 p.pag…

Docker:集装箱式“运输”在软件上的实现

Docker是由PaaS提供商dotCloud在2013年年初创建的一款开源应用引擎&#xff0c;Docker可以自动将任何应用打包成轻量、可移植、自包涵的容器引擎。开发者构建的应用可以一次构建全平台运行&#xff0c;包括本地开发机器&#xff0c;生产环境&#xff0c;虚拟机和云等。 Docker基…

CAMP选股

挑选五只股票&#xff1a;万科A、中国平安、贵州茅台、万华化学和科大讯飞&#xff0c;然后我们以沪深300作为市场基准。import pandas as pd import tushare as ts # 获取数据 pro ts.pro_api() wanke pro.daily(ts_code000002.SZ, start_date20170101) pingan pro.daily(t…

大二下周总结(三)

记录时间第三周所花时间&#xff08;包括上课&#xff09;13h代码行500博客量2所了解到的知识点html java-script java本周用在练习代码的时间自己感觉还可以&#xff0c;由于在第二周课堂练习后觉得自己有许多不足&#xff0c;所以有了必须奋进的压力。 除了编写代码能力的提高…

C读写ini文件

/* read/write ini file with c function file testini.c chinayaosir blog: http://blog.csdn.net/chinayaosir connect.ini [database] 此程序有些BUG 当ini文件不存在时&#xff0c;第一次建立connect.ini文件时&#xff0c; 在[database]前面会多一个空格. */ #include…

包含天,时,分,秒的倒计时

这个很基础的东西写的过程中出了很多小的错误&#xff0c;在此记录一下。 原生的js。 结构&#xff1a; <p id"time"></p> js: <script>  var start new Date().getTime(); // 获取开始时间  var end new Dat…

计算相关度

# 使用numpy import numpy as np R [0.01, 0.05, 0.02, -0.03] var1 np.var(R) std1 np.std(R) # # 使用pandas import pandas as pd R pd.Series([0.01, 0.05, 0.02, -0.03]) var2 R.var() std2 R.std() import pandas as pd import tushare as ts pro ts.pro_api() w…

如何使用Dockerfile构建镜像

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Dockfile是一种被Docker程序解释的脚本&#xff0c;Dockerfile由一条一条的指令组成&#xff0c;每条指令对应Linux下面的一条命令。Doc…

今时今日,C还适合当下之所需么?

本文来源于我在InfoQ中文站翻译的文章&#xff0c;原文地址是&#xff1a;http://www.infoq.com/cn/news/2013/01/C-Language 来自Couchbase的Damien Katz认为C依然是非常适合于后端编程的一门语言&#xff0c;然而有的开发者则觉得C有太多的瑕疵&#xff0c;他们支持C或是Java…

《吴军.科技史纲60讲》摘录

本文由Markdown语法编辑器编辑完成&#xff0e; 《科技史纲60讲》是吴军老师最新开设的专栏名称&#xff0c;该专栏主要是讲解人类文明和科技发展史。吴军老师在专栏的发刊词《历史总在重演&#xff0c;科技永远向前》中提到&#xff0c;能量和信息是贯穿人类文明发展的两条线索…

API Gateway——KONG简单入门

一、简介 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Kong&#xff0c;是由Mashape公司开源的&#xff0c;基于Nginx的API gateway。 二、特点 可扩展&#xff1a;支持分布式 模块化…

小程序 公众号/h5相互跳转-webview

小程序与h5的跳转 前提小程序管理后台配置域名白名单&#xff0c;并且h5页面是嵌在小程序里面&#xff08;相互跳的前提条件&#xff09; 在业务域名中设置好访问的h5地址 微信官方web-view 介绍地址 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.ht…

十、eclipse快捷键大全

eclipse快捷键大全转载于:https://www.cnblogs.com/zheaven/p/10541531.html

如何保证代码的高质量?

代码的高质量是软件的灵魂&#xff0c;代码 数据结构 算法&#xff0c; 而高质量的代码 优良的变量、函数命名 优良的代码结构、代码层次结构 数据结构 算法。 时时刻刻想这上面的四点&#xff0c;你的代码就会渐渐的上新台阶&#xff0c;老板不给你加工资还…

centos6.5 安装 kong 网关

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 最近要求了解下kong网关&#xff0c;然后在网上一顿找&#xff0c;说实话&#xff0c;度娘的力量还是不行啊&#xff0c;找出来的那些跟…