C++ 顺序表

/***
1顺序表
1、必做题

  1. 编写程序建立一个数续表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。
  2. 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。
      如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);
    如果不存在,返回-1。编写主函数测试结果。
  3. 在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。
    解题思路:首先查找插入的位置,再移位,最后进行插入操作;
    从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置;
    然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。
  4. 删除顺序表中所有等于X的数据元素。

2、选做题
  已知两个顺序表A和B按元素值递增有序排列,
  要求写一算法实现将A和B归并成一个按元素值递减有序排列的顺序表
  (允许表中含有值相同的元素)。

***/

//在头文件中"SeqList.h"
/**< writer:FDA_orangebook */
/** \brief: 顺序表
*
* int Length(){return length;}
//用于获取长度1-N
* T Get(int i);
//用于获取第I个数据
* T Locate(T value);
//用于获取 值为value的位置
* void Insert(T value);
//在递增的顺序中,插入value值
* void Insert(int position,T value);
//在position这个位置,插入value
* void Insert(T *_data,int _length);
//将_data与data以递减的顺序合并
* T Delete(int position);
//将position这个中的元素删除
* void PrintList();
//打印 data 序列
*/ const int MaxSize=;
#define T int //此处修改 数组的类型
class SeqList
{
public:
//定义两个构造函数
SeqList()
{
length=;
}
SeqList(T a[],int n);
~SeqList() {}
int Length()
{
return length;
}
T Get(int i);
T Locate(T value);
void Insert(T value);
void Insert(int position,T value);
void Insert(T *_data,int _length);
T Delete(int position);
void PrintList();
private:
T data[MaxSize];
int length;
};
//在SwqList.cpp
#ifndef SEQLIST_H_ #define SEQLIST_H_
#include "SeqList.h"
#include<iostream>
#include<algorithm>
using namespace std;
SeqList::SeqList(T *a,int n)
{
if(n>MaxSize) cout<<"Parameters of illegal"<<endl;
for(int i=; i<n; i++)
data[i]=a[i];
length=n;
} void SeqList::Insert(T value)
{
int j;
sort(data,data+length);
cout<<length<<endl;
for(j=length; value<=data[j-]&&j>; --j)
data[j]=data[j-];
data[j]=value;
++length;
cout<<length<<endl;
} void SeqList::Insert(int position,int value)
{
if(length>=MaxSize||position<||position>length+)
cout<<"input error"<<endl;
for(int j=length; j>=position; --j)
data[j]=data[j-];
data[position-]=value;
++length;
}
bool myfunction (int i,int j)
{
return (i>j);
}
void SeqList::Insert(T *_data,int _length)
{
//int j=0;
sort(data,data+length,myfunction);
sort(_data,_data+_length,myfunction);
PrintList();
int i=;int j;
for(; i<_length;++i)
{
for( j=;_data[i]<data[j]&&j<length;++j);
Insert(j+,_data[i]); } } T SeqList::Delete(int position)
{
if(length==||position<||position>length) cout<<"error"<<endl;
else
{
int x=data[position-];
for(int j=position; j<length; j++)
data[j-]=data[j];
length--;
return x;
}
return (T)-;
} T SeqList::Get(int i)
{
if(i<||i>length) cout<<"error"<<endl;;
return data[i-];
} T SeqList::Locate(T value)
{
for(int i=; i<length; i++)
if(data[i]==value) return i+;
return -;
} void SeqList::PrintList()
{
cout<<"\n****************************"<<endl;
for(int i=; i<=length; i++)
i%==?cout<<data[i-]<<"\n":cout<<data[i-]<<"\t";
};
#endif // SwqList_H_
#include"SeqList.h"
#include<iostream>
#include<stdlib.h> using namespace std;
#define MAX 100 int main()
{
T a[]= {,,,,,,,,,};
T bb[]= {,,,,,,};
SeqList test(a,); test.PrintList(); if(test.Locate(a[])!=-)
cout<<test.Locate(a[])<<endl;
test.Insert(-);
test.PrintList(); test.Delete(test.Locate(-));
test.PrintList(); test.Insert(bb,);
test.PrintList();
}

C++ 顺序表的更多相关文章

  1. jdk顺序表笔记

    一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...

  2. c++顺序表基本功能

    头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...

  3. 数据结构:顺序表(python版)

    顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...

  4. 《数据结构》2.2顺序表(sequence list)

    //顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...

  5. c数据结构 顺序表和链表 相关操作

    编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...

  6. java顺序表和树的实现

    一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...

  7. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  8. 顺序表C语言版

    #include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...

  9. C#线性表之顺序表

    线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...

  10. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...

随机推荐

  1. maven 解决 Eclipse is running in a JRE, but a JDK is

    解决安装了maven插件的myeclipse每次开启报错 The Maven Integration requires that Eclipse be running in a JDK, becaus ...

  2. js检测浏览器版本代码,兼容ie11

    原文:http://blog.csdn.net/tenkin/article/details/11640165 <script type="text/javascript"& ...

  3. 作为 .Net 攻城师,所必需掌握的 .Net Profiling 技术

    众所周知,性能问题是所有实用应用在迭代过程中必然要面对的问题.对于此类问题,简单地投入更多硬件资源的做法可能会取得一定效果.但总的来看,此类做法的边际成本是不断上升的.换言之,随着性能需求的上涨,要换 ...

  4. nagios plugins之 check_http

    nagios下的check_http ZT具体参数是一个比较重要的点,我带大家来看看.. //显示版本 #./check_http -V check_http v2053 (nagios-plugin ...

  5. hdu 1729 Stone Game 博弈论

    那么对于这题对于每一堆,放石子放满就想当于满的时候取s-c个,反向只是让我理解题意更深. 首先我们知道(S,S)这个局面是必败局面.对于每一堆能加的数量有限,而当c的值(大于或者等于) D=sqrt( ...

  6. mysql-5.7.10-winx64 安装时遇到的问题

    1.修改密码# /etc/init.d/mysqld stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &am ...

  7. 李洪强iOS开发之XMPP

      XMPP历史 这个xmpp框架在2008年开始,不过是一个简单地RFC实现.提供一个最小的代理去接受三种xmpp的基本类型presence.message.iq.因为framwork只提供了最小的 ...

  8. iOS开发--使用RSA加密

    在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...

  9. POJ1416——Shredding Company(DFS)

    Shredding Company DescriptionYou have just been put in charge of developing a new shredder for the S ...

  10. 通过dbms_xplan.display_cursor识别低效的执行计划

    dbms_xplan.display_cursor定义: function display_cursor(sql_id           varchar2 default  null,        ...