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数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
随机推荐
- .net framework 3.5 安装报错 0x800F0954问题
windows Server 2019 .net framework 3.5 安装报错 0x800F0954问题 .net framework 3.5的安装教程:但是安装出现0x800F0954这个错 ...
- 研磨JavaScript系列(一):回归简单
想要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原.编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系.JavaScript就是把数据和代码都简化到最原始 ...
- 原生js实现简单的焦点图效果
用到一些封装好的运动函数,主要是定时器 效果为图片和图片的描述定时自动更换 <!DOCTYPE html> <html> <head> <meta chars ...
- react native 报错日常 if (_total > 0) { ~~~~~~ ^ ~ 1 error generated.
node_modules/react-native/React/Base/RCTJavaScriptLoader.mm::: error: ordered comparison between poi ...
- 获取Google地图位置坐标并嵌入到网页
有时候做网页的时候,可能需要一个地图显示,可能会用到Google地图,所以就分享一下get到的新技能.在网上查资料的时候有这种方式 但是我没做成功,所以找了其他的方式. 首先,打开Google地图,查 ...
- Beta Edition [ Group 1 ]
DeltaFish Beta Edition 一.七月开发过程 小组会议 DeltaFish 校园物资共享平台 第八次小组会议 GITHUB https://github.com/DeltaFishS ...
- html5——3D转换
角度旋转 rotateX:默认以center绕x轴旋转 rotateY:默认以center绕y轴旋转 rotateZ:默认以cente绕z轴r旋转 //rotateX原点为center==>正值 ...
- Object未定义
js加载时会在jquery中报Object未定义的错误? 原因: 页面和iframe页面中都引入了jquery 或者 是页面中包含iframe,并且在iframe没有完成加载前操作了iframe中的j ...
- Linux监控实时log
https://jingyan.baidu.com/article/93f9803f5545a3e0e46f5596.html
- [文章转载]-Java后端,应该日常翻看的中文技术网站 -江南白衣
Java后端,应该日常翻看的中文技术网站 1.内容生产者 InfoQ 中文技术第一站,佩服霍老板,真金白银地为中国程序员们生产内容. ImportNew 专门面向Java的内容生产者兼聚合者,偶然也有 ...