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数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
随机推荐
- [Swift通天遁地]七、数据与安全-(2)对XML和HTML文档的快速解析
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Netty--数据通信和心跳检测
数据通信 概述: netty的ReadTimeOut实现方案3 服务端: public class Server { public static void main(String[] args) th ...
- JS中的面相对象
1.使用Object或对象字面量创建对象 JS中最基本创建对象的方式: var student = new Object(); student.name = "easy"; stu ...
- mysql触发器的操作
一.创建触发器 1.创建有一条执行语句的触发器 CREATE TRIGGER trigger_name BEFORE|AFTER trigger_EVENT(INSERT|DELETE|UPDATE) ...
- win32绘图基础
获取设备环境句柄: (1)WM_PAINT消息中: PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd,&ps); EndPaint(hwnd,&ps ...
- Linux下的文件结构,及对应文件夹的作用
Linux下的文件结构,及对应文件夹的作用 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比 ...
- Centos6.7安装Cacti教程
Centos6.7安装Cacti教程# link:http://docs.cacti.net/plugins/ blog地址:http://www.cnblogs.com/caoguo 一.基本环境安 ...
- Codeforces_The least round way
B. The least round way time limit per test 2 seconds memory limit per test 64 megabytes input standa ...
- apache配置多域名二级域名
nginx配置多域名泛解析的看这个链接:https://www.cnblogs.com/Crazy-Liu/p/10879740.html 下面直接来操作: [root@localhost ~]# f ...
- php连接数据库的两种方式
一.mysqli方式连接数据库 $mysql_conf = array( 'host' => 'localhost:3306', 'db' => 'ssql', 'db_user' =&g ...