【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
来源:互联网 发布:哈布斯堡 知乎 编辑:程序博客网 时间:2024/05/19 19:13
建立源文件SeqList.cpp:
#define _CRT_SECURE_NO_WARNINGS 1#include"SeqList.h"int main(){ Test(); system("pause"); return 0;}
建立源文件SeqList.h:
#ifndef __SEQLIST_H__#define __SEQLIST_H__#include<iostream>using namespace std;#include<assert.h>typedef int DataType;class SeqList{public: SeqList() :_arr(NULL) , _size(0) , _capacity(0) {} SeqList(const SeqList& s) :_size(s._size) , _capacity(s._capacity) { memcpy(_arr, s._arr, sizeof(DataType)* s._size); } SeqList& operator= (const SeqList& s) { if (this != &s) { DataType* tmp = new DataType[s._size]; memcpy(tmp, s._arr,sizeof(DataType) * s._size); delete _arr; _arr = NULL; _arr = tmp; _size = s._size; _capacity = s._capacity; } return *this; } ~SeqList() { if (_arr) { delete _arr; _arr = NULL; } } void PushBack(DataType x) { // 0 1 多 _CheckCapacity(); if (_size == 0) { _size = 1; _arr[0] = x; } else { _arr[_size++] = x; } } void PrintSeqList() { for (int i = 0; i < _size; i++) { cout << _arr[i] << " "; } cout << endl; } void PopBack() { if (_size == 0) { return; } else { _size--; } } void PushFront(DataType x) { _CheckCapacity(); if (_size == 0) { ++_size; _arr[0] = x; return; } ++_size; for (int i = _size - 2; i >= 0; i--) { _arr[i + 1] = _arr[i]; } _arr[0] = x; } void PopFront() { if (_size == 0) { return; } for (int i = 1; i < _size; i++) { _arr[i - 1] = _arr[i]; } --_size; } void Insert(size_t pos, DataType x) { if (_size == pos) { PushBack(x); return; } ++_size; for (int i = _size; i > pos; i--) { _arr[i] = _arr[i - 1]; } _arr[pos] = x; } int Find(DataType x) { int i = 0; while (i <= _size) { if (_arr[i] == x) { return i; } i++; } return -1; } void _CheckCapacity() { if (_size >= _capacity) { _capacity = 2 * _capacity + 3; _arr = (DataType*)realloc(_arr, sizeof(DataType)* _capacity); } }private: size_t _capacity; size_t _size; DataType* _arr;};void Test(){ SeqList s; s.PushBack(1); s.PushBack(2); s.PushBack(3); s.PushBack(4); s.PrintSeqList(); s.PopBack(); s.PrintSeqList(); s.PushFront(0); s.PrintSeqList(); s.PopFront(); s.PrintSeqList(); s.Insert(3, 10); s.PrintSeqList(); int ret = s.Find(10); printf("%d\n", ret);}#endif //__SEQLIST_H__
本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1746842
0 0
- 【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack
- 【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
- 双向链表 PushBack/PopFront
- 2 双向链表 PushBack/PopFront
- C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
- c::动态顺序表的简单实现
- C语言动态顺序表的实现
- c语言动态顺序表的实现
- 【C语言】动态顺序表的实现
- 静态和动态顺序表的实现(c语言)
- C语言 顺序表的实现 (动态)
- 静态与动态顺序表操作的C语言实现
- C语言:动态顺序表的简单实现
- 动态顺序表的实现(c语言版本)
- C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
- 【C语言项目】注释转换
- 【String类浅拷贝的实现】C++:String类引用计数浅拷贝的两种实现
- 【String类】C++:String类的传统写法与现代写法
- 《剑指offer》字符串中的字符替换
- 【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
- 【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
- 【C++】模版类实现普通类静态顺序表
- 【C++】认识模版函数
- 【C++】模版实现双向链表的各种操作(如:逆置、去重Unique、分类(冒泡)、合并)
- 【C++】容器适配器实现栈Stack的各种功能(入栈、出栈、判空、大小、访问所有元素等)