C++ 顺序表
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 ...
随机推荐
- 响应式菜单(bootstrap)
<nav class="navbar navbar-default" role="navigation"> <div class=" ...
- bzoj 2744: [HEOI2012]朋友圈 二分图匹配
2744: [HEOI2012]朋友圈 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 612 Solved: 174[Submit][Status] ...
- leetcode2 Two Sum II – Input array is sorted
Two Sum II – Input array is sorted whowhoha@outlook.com Question: Similar to Question [1. Two Sum], ...
- tomcat部署javaweb项目的三种方式
一.将项目文件夹或war包直接拷贝到tomcat的webapps下 二.在Tomcat\conf\Catalina\localhost下建立xml文件 修改内容如下<Context path=& ...
- DELPHI下API简述(1800个API)
DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属 ...
- dynamic_cast 用法
dynamic_cast < type-id > ( expression ) 该运算符把expression转换成type-id类型的对象.Type-id必须是类的指针.类的引用或者vo ...
- Android 去除EditText边框,添加下划线,
首先:重写EditText //请在这里添加您的包名 import android.content.Context; import android.graphics.Canvas; import an ...
- 在vs2010中mfc,C++的一些小经验
1 如果你最近才从vc6.0到vs2010,在vs2010中mfc可能遇见一个小问题,如果你添加或改天了窗口中的控件,运行程序缺没有发现其中的变化,这时候需要在debug选项中rebuild all一 ...
- 大四实习准备3_java多线程
4.25.27无耻地懒散了.....26号陪女朋友去了.今天28号,继续加油! 2015-4-28 Java 多线程 (java中类不能多继承,可以多层继承:接口则都可以) 定义和创建: 方法一:继承 ...
- memcpy与memmove区别
头文件:#include <string.h> memmove() 用来复制内存内容,其原型为: void * memmove(void *dest, const void *src ...