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数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
随机推荐
- 【转】关于Java基础你不得不会的34个问题
1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的 ...
- Visual Studio Code配置GitHub(Win7环境)
一.软件环境说明(演示环境) 1.操作系统:Windows7旗舰版(64bit) 2.Visual Studio Code版本:1.32.3 3.Git版本:2.21.0.windows.1 二.软件 ...
- Java中的管道流 PipedOutputStream和PipedInputStream
我们在学习IO流的时候可能会学字节流.字符流等,但是关于管道流的相信大部分视频或者教程都是一语带过,第一个是因为这个东西在实际开发中用的也不是很多,但是学习无止境,存在既有理.JDK中既然有个类那说明 ...
- javascript 获取时间
Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); ...
- 基于ASP.Net Core开发一套通用后台框架记录-(项目的搭建)
写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...
- 【转】Linux 之 数据流重定向
转自:http://www.linuxidc.com/Linux/2012-09/69764.htm linux在你登入时,便将默认的标准输入.标准输出.标准错误输出安排成你的终端.I/O重定向就是你 ...
- mybatis中打印sql语句
在mybatis-config.xml中properties节点下,配置一个settings节点 <settings> <setting name="cacheEnable ...
- mysql和java的时间对应关系
引用:http://blog.csdn.net/xinghuo0007/article/details/51500923 MySQL(版本:5.1.50)的时间日期类型如下: datetime 8by ...
- ionic start 又一次的出错
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\ ...
- 06--Qt窗口布局
Qt窗口布局 标签: qtlayout 2012-05-05 07:56 3076人阅读 评论(0) 收藏 举报 分类: Qt开发(33) 版权声明:本文为博主原创文章,未经博主允许不得转载. 布 ...