c++实现数据结构1.顺序表
头文件seqlist.h
#ifndef _SEQLIST_H_
#define _SEQLIST_H_ #include<iostream>
using namespace std; template <class Type>
class seqlist
{
public:
seqlist()
{
capacity = DefaultSize;
base = new Type[capacity];
size = 0;
}
seqlist(int sz)
{
capacity = sz > DefaultSize ? sz : DefaultSize;
base = new Type[capacity];
size = 0;
}
~seqlist()
{
delete []base;
}
public:
bool Full()const
{
if (size > capacity)
return true;
return false;
}
bool Empty()const
{
if (size == 0)
return true;
return false;
}
bool push_back(Type const x)
{
if (Full())
return false;
else
{
base[size] = x;
size++;
}
return true;
}
bool push_front(Type const x)
{
if (Full())
return flse;
else
{
for (int i = size; i > 0; ++i)
{
base[i] = base[i - 1];
}
base[0] = x;
}
return true;
}
void show_list()
{
for (int i = 0; i < size; ++i)
{
cout << base[i] << "->";
}
cout << "end" << endl;
}
void pop_back()
{
size--;
}
void pop_front()
{
for (int i = 0; i < size-1; ++i)
{
base[i] = base[i + 1];
}
size--;
}
bool insert_val(Type x)
{
if (Empty() || size == capacity)
return false;
sort();
int i = 0;
while (x > base[i] && i < size)
{
i++;
}
insert_pos(i,x);
return true;
}
bool insert_pos(int pos,Type x)
{
if (pos <0 || pos>size)
return false;
else
{
for (int i = size; i > pos; --i)
{
base[i] = base[i - 1];
}
base[pos] = x;
}
size++;
}
int find(Type key)
{
for (int i = 0; i < size; ++i)
{
if (base[i] == key)
return i;
}
cout << "no exit" << endl;
return -1;
}
bool delete_pos(int pos)
{
if (pos<0 || pos > size)
return false;
else
{
for (int i = pos; i < size - 1; ++i)
{
base[i] = base[i + 1];
}
size--;
}
}
bool delete_val(Type key)
{
if (Empty())
return false;
else
{
int pos = find(key);
delete_pos(pos);
}
return true;
}
void sort()
{
Type tmp;
for (int i = 1; i<size; ++i)
{
tmp = base[i];
int j;
for ( j = i; tmp < base[j - 1]; --j)
{
base[j] = base[j - 1];
}
base[j] = tmp;
}
}
void resever()
{
if (size == 0 || size == 1)
return; for (int i = 0; i < (size / 2); ++i)
{
Type tmp = base[i];
base[i] = base[size - i-1];
base[size - i-1] = tmp;
}
}
int length()
{
return size;
}
void clear()
{
size = 0;
}
void destory()
{
delete[]base;
}
private:
enum { DefaultSize = 8 };
Type *base;
int capacity;
int size;
}; #endif
主程序
#include"seqlist.h" void main()
{
seqlist<int> mylist;
int select = 1;
int item;
int pos;
while (select)
{
cout <<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<< endl;
cout <<"& &"<< endl;
cout <<"& [1] push_back [2] push_fornt &"<< endl;
cout <<"& [3] show_list [4] pop_back &"<< endl;
cout <<"& [5] pop_front [6] insert_val &"<< endl;
cout <<"& [7] insert_pos [8] find &"<< endl;
cout <<"& [9] delete_pos [10] delete_val &"<< endl;
cout <<"& [11] sort [12] resever &"<< endl;
cout <<"& [13] length [14] clear &"<< endl;
cout <<"& [15] destroy [0] quit_system &"<< endl;
cout <<"& &"<< endl;
cout <<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<< endl;
cout << "please choose->" ;
cin >> select;
switch (select)
{
case 1:
cout << "please cin data end with -1:" << endl;
while (cin >> item, item != -1)
{
mylist.push_back(item);
}
break;
case 3:
mylist.show_list();
break;
case 4:
mylist.pop_back();
break;
case 5:
mylist.pop_front();
break;
case 6:
cout << "please cin the data you want insert:";
cin >> item;
mylist.insert_val(item);
break;
case 7:
cout << "please cin pos and data:";
cin >> pos >> item;
mylist.insert_pos(pos, item);
break;
case 8:
cout << "please cin the data you want find ,it will back its pos: ";
cin >> item;
cout<<mylist.find(item)<<endl;
break;
case 9:
cout << "please cin the pos you want delete: ";
cin >> pos;
mylist.delete_pos(pos);
break;
case 10:
cout << "please cin the data you want to dalete: ";
cin >> item;
mylist.delete_val(item);
break;
case 11:
cout << "sort !"<<endl;
mylist.sort();
break;
case 12:
mylist.resever();
break;
case 13:
cout<<mylist.length()<<endl;
break;
case 14:
mylist.clear();
break;
case 15:
mylist.destory();
break;
default:
break;
}
}
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
c++实现数据结构1.顺序表的更多相关文章
- hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)
基础数据结构——顺序表(2) Time Limit: 1000 MS Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...
- [Python] 数据结构--实现顺序表、链表、栈和队列
说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...
- C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...
- [数据结构]C#顺序表的实现
在数据结构的学习当中,想必C++可能是大家接触最多的入门语言了 但是C#的数据结构却很少看到,今天我写了一个C#顺序表的顺序存储结构 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是 ...
- 【PHP数据结构】顺序表(数组)的相关逻辑操作
在定义好了物理结构,也就是存储结构之后,我们就需要对这个存储结构进行一系列的逻辑操作.在这里,我们就从顺序表入手,因为这个结构非常简单,就是我们最常用的数组.那么针对数组,我们通常都会有哪些操作呢? ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
- 数据结构之顺序表,c#实现
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- Java——数据结构(顺序表)
这是一个顺序表的类,初始化的时候就已经确定了表的长度,之后不能添加数据,因为使用的是数组存储的数据,不过这个表的类型是泛型的. public class List { private Object[] ...
- javascript数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
随机推荐
- 像素缓冲区对象PBO 记录
像素缓冲区对象PBO 记录 和所有的缓冲区对象一样,它们都存储在GPU内存中,我们可以访问和填充PBO,方法和其他的缓冲区一样. 当一个PBO被绑定到GL_PIXEL_PACK_BUFFER,任何读取 ...
- $P3931 SAC E一道难题 Tree$
problem #include <bits/stdc++.h> #define rep(i,j,n) for(register int i=j;i<=n;i++) #define ...
- ZOJ3714JavaBeans
#!/usr/bin/env python # encoding: utf-8 t = int(raw_input()) for i in range(t): n,k = [int(x) for x ...
- eclipse-html插件的安装
需求:需要在eclipse里面编辑html和jsp,语法高亮和语法提示,自动补全等. 1.下载GEF(依赖包): http://www.eclipse.org/downloads/download.p ...
- ACM_最值差(线段树区间查询最值)
最值差 Time Limit: 2000/1000ms (Java/Others) Problem Description: 给定N个数A1A2A3A4...AN.求任意区间Ai到Aj中的最大数与最小 ...
- 题解报告:hdu 1162 Eddy's picture
Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become ...
- Android彻底组件化方案实践
本文提出的组件化方案demo已经开源,参见文章Android彻底组件化方案开源. 文末有罗辑思维"得到app"的招聘广告,欢迎各路牛人加入!! 一.模块化.组件化与插件化 项目发展 ...
- 易语言 打开exe可执行文件、打开网页
打开文件--------按钮被单击事件 直接复制以下代码即可 .版本 2 .子程序 _按钮58_被单击 运行 (“exe文件路径”, 假, ) 打开网站--------按钮被单击事件 直接复制以下代码 ...
- 【sqli-labs】 less59 GET -Challenge -Double Query -5 queries allowed -Variation2 (GET型 挑战 双查询 只允许5次查询 变化2)
整型的注入 http://192.168.136.128/sqli-labs-master/Less-59/?id=1 or UpdateXml(1,concat(0x7e,database(),0x ...
- (转)Arcgis for JS之Cluster聚类分析的实现
http://blog.csdn.net/gisshixisheng/article/details/40711075 在做项目的时候,碰见了这样一个问题:给地图上标注点对象,数据是从数据库来的,包含 ...