#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; typedef int DataType; class SeqList { public: SeqList() :_arr(NULL), _size(0), _capacity(0) {} SeqList(const SeqList& s) :_capacity(s._capacity), _size(s._size) { _arr=(new DataType[s._size]); memcpy(_arr, s._arr, sizeof(DataType)* s._size); } void CheckCapcity(); void PushBack(DataType x); void PushFront(DataType x); ~SeqList(); void PopBank(); void PopFront(); void Disp(); void Insert(size_t pos, DataType x); int Find(DataType x); SeqList & operator=(SeqList& s); private: DataType* _arr; size_t _size; size_t _capacity; }; SeqList& SeqList::operator=(SeqList& s) { if (this != &s) { int *tmp; tmp = new DataType[s._size]; memcpy(tmp, s._arr, sizeof(DataType)*s._size); delete _arr; _arr = tmp ; _size = s._size; _capacity = s._capacity; } return *this; } void SeqList::CheckCapcity() { if (_size >= _capacity) { _capacity = 2 * _capacity + 3; _arr = (DataType*)realloc(_arr, sizeof(DataType)*_capacity); } } void SeqList::PushBack(DataType x) { CheckCapcity(); if (_size == 0) { _size = 1; _arr[0] = x; } else { _arr[_size++] = x; } } void SeqList:: Disp() { int i = 0; for (i = 0; i < _size; i++) { cout << _arr[i]<<endl; } } SeqList::~SeqList() { if (_arr) { delete _arr; _arr = NULL; } } void SeqList::PopBank() { if (0==_size) { return; } else { --_size; } } void SeqList::PushFront(DataType x) { CheckCapcity(); for (int i = _size-1; i >= 0; i--) { _arr[i + 1] = _arr[i]; } _arr[0] = x; ++_size; } void SeqList::PopFront() { if (0 == _size) { return; } else { for (int i = 0; i < _size-1; i++) { _arr[i] = _arr[i + 1]; } --_size; } } void SeqList::Insert(size_t pos, DataType x) { CheckCapcity(); for (int i = _size; i > pos-1; i--) { _arr[i] = _arr[i-1]; } _arr[pos-1] = x; _size++; } int SeqList::Find(DataType x) { int i = 0; for (i = 0; i < _size;i++) { if (_arr[i] == x) { return i; } } return NULL; } void test1() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PushBack(5); s1.Disp(); } void test2() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PushBack(5); s1.PopBank(); s1.PopBank(); s1.PopBank(); s1.PopBank(); //s1.PopBank(); s1.Disp(); } void test3() { SeqList s1; //s1.PushBack(1); //s1.PushBack(2); //s1.PushBack(3); //s1.PushBack(4); //s1.PushBack(5); s1.PushFront(0); s1.Disp(); } void test4() { SeqList s1; s1.PushBack(1); //s1.PushBack(2); //s1.PushBack(3); //s1.PushBack(4); //s1.PushBack(5); s1.PopFront(); s1.Disp(); } void test5() { SeqList s1; //s1.PushBack(1); //s1.PushBack(2); //s1.PushBack(3); //s1.PushBack(4); //s1.PushBack(5); s1.Insert(1, 7); s1.Disp(); } void test6() { SeqList s1; s1.PushBack(1); s1.PushBack(2); s1.PushBack(3); s1.PushBack(4); s1.PushBack(5); s1.Disp(); SeqList s2; s2 = s1; s2.Disp(); } int main() { //test1(); //test2(); //test3(); //test4(); //test5(); test6(); system("pause"); return 0; }
c++实现线性表
原创
©著作权归作者所有:来自51CTO博客作者fun8888888的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
1.链式存储的线性表——C语言实现
本文是作者学习数据结构过程中在单链表基本运算代码实现时遇到问题并解决问题后的结果
单链表 基本运算 存储结构 代码实现 -
【数据结构】详细剖析线性表
【数据结构】第二章——线性表(9)总结了线性表的基本知识点,并对循序表与链表进行了比较
数据结构 C语言 线性表 顺序表 链表 -
数据结构 线性表 线性实现 c++ 源代码
数据结构 线性表的 c++源代码线性实现。
数据结构 线性表 c++ 源代码 -
【数据结构 C++和Python实现】线性表
C++ 线性表
数据结构 c++ python 顺序表 sql -
C语言实现线性表
#ifndef _MY_SEQLIST_H_#define _MY_SEQLIST_H_typedef void SeqLi
#include #define 线性表 -
数据结构 线性表 链式 c++源代码 实现
数据结构 线性表 链式 c++ 源代码实现
数据结构 线性表 链式 c++ 源代码