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数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
随机推荐
- [Apple开发者帐户帮助]九、参考(5)支持的功能(tvOS)
tvOS应用程序可用的功能取决于您的程序成员身份. 能力 ADP 企业 Apple开发者 应用程序组 相关域名 背景模式 数据保护 游戏中心 游戏控制器 HomeKit iCloud:Cl ...
- 拼接sql ()
SELECT ID,FORMNAME,NODENAME,SEQUENCE, NAME, STATE, NOWTIMES, WORK.FQREALNAME||'('||FQDEPT.FULLN ...
- MVC系列学习(十)-生成URL与表单
本次学习,在路由配置信息中,有两个路由规则,在网站第一次启动的时候,注册了两个路由表 1.动态生成url A.在路由规则中,因为Default在前面,所以最新找到该路由表,此时不管 自己定义的控制器名 ...
- 【转】 Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...
- [转]STL之deque容器详解
Deque 容器 deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容.deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中 ...
- OpenCV绘制检测结果
OpenCV绘制检测结果 opencv rtcp timestamp 一.介绍 由于在验证阶段,使用FPGA时我们的算法检测速度很慢,没法直接在主流上进行绘图,否则的话,主流就要等待算法很久才能 ...
- ajax 实现输入提示效果
网站主页 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 移动web——bootstrap栅格系统
基本简介 1.Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列 2.栅格系统用于通过一系列的行(row)与列(c ...
- CSS——个人资料demo
1.上下外边距合并,选最大值. 2.两个input标签在编辑中如果换行了,在浏览器中显示的时候会自动增加一些距离. <!DOCTYPE html> <html lang=" ...
- VHDL_ADC之cic_diffcell
library IEEE; use ieee.std_logic_1164.all; use ieee.numeric_std.all; library edclib; use edclib.pkg_ ...