C++ 顺序表
/***
1顺序表
1、必做题
- 编写程序建立一个数续表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。
- 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。
如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);
如果不存在,返回-1。编写主函数测试结果。 - 在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。
解题思路:首先查找插入的位置,再移位,最后进行插入操作;
从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置;
然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。 - 删除顺序表中所有等于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++ 顺序表的更多相关文章
-
jdk顺序表笔记
一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...
-
c++顺序表基本功能
头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...
-
数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
-
《数据结构》2.2顺序表(sequence list)
//顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...
-
c数据结构 顺序表和链表 相关操作
编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...
-
java顺序表和树的实现
一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...
-
数据结构顺序表删除所有特定元素x
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...
-
顺序表C语言版
#include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...
-
C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
-
C语言 线性表 顺序表结构 实现
一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...
随机推荐
-
Java上传文件
Action /* * 后台商品管理的Action */ public class AdminProductAction extends ActionSupport implements ModelD ...
-
asp.net 验证码session为null的解决方案
最近在做Y集团的订单系统时,登陆页面在测试时发现一个以前没有注意到的问题,登陆页面需要使用验证码,引用了一个生成验证码的aspx页面,在aspx页面中生成session和验证码图片,在登陆页面的后台处 ...
-
如何配置 URLScan 工具
本文分步说明如何配置 URLScan 工具以防止 Web 服务器受到攻击和利用. 安装 URLScan 要安装 URLScan,请访问下面的 Microsoft Developer Network ( ...
-
黄聪:MySql Host is blocked because of many connection errors; unblock with &#39;mysqladmin flush-hosts&#39; 解决方法(转)
转自:http://www.cnblogs.com/susuyu/archive/2013/05/28/3104249.html 环境:linux,mysql5.5.21 错误:Host is blo ...
-
Hits算法
HITS(HITS(Hyperlink - Induced Topic Search) ) 算法是由康奈尔大学( Cornell University ) 的Jon Kleinberg 博士于1997 ...
-
js对象转到字符串
var str = JSON.stringify(obj);
-
Java 学习路线以及各阶段学习书籍,博文,视频的分享
感谢: 感谢每一个打开这篇文章的人,听我在这里瞎扯!至于我为什么会有闲情写这篇文章呢?因为我每天想的是为什么要给我这样的需求,背后的人性是什么,我能再做些什么能让他更好.久而久之,我也稍微有了些自己的 ...
-
HMAC-SHA256 &; MD5 In C#
C#中两个常用的加密方法: 个人Mark,仅作参考. public static class Extends { /// <summary> /// HMAC SHA256 /// < ...
-
C# Lambda 表达式学习之(三):动态构建类似于 c =>; c.Age == null || c.Age >; 18 的表达式
可能你还感兴趣: 1. C# Lambda 表达式学习之(一):得到一个类的字段(Field)或属性(Property)名,强类型得到 2. C# Lambda 表达式学习之(二):LambdaExp ...
-
python_cookbook之路:数据结构-解压可迭代对象赋值给多个变量以及扩展的迭代解压语法(*)
1.一一对应: >>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ] >>> name, shares, price, d ...