【c++】顺序表
来源:互联网 发布:细说php第四版 编辑:程序博客网 时间:2024/05/21 05:38
顺序表的内容C语言博客已经描述过,这里只贴上c++代码
#include<iostream>#include<cstring>#include<cstdlib>using namespace std;#define MAX 100typedef int DateType;class SeqList{friend ostream& operator<<(ostream&os,SeqList &seq);public:SeqList():_sz(0),_capacity(0),_pdate(NULL){}SeqList(const SeqList& seq){_pdate=new DateType[seq._capacity];memcpy(_pdate,seq._pdate,seq._sz*(sizeof(DateType)));_sz=seq._sz;_capacity=seq._capacity;}~SeqList(){if(_pdate!=0){delete[] _pdate;_pdate=NULL;}_sz=0;_capacity=0;}void PushBack(const DateType& x)//尾插 {checkcapacity(); _pdate[_sz]=x; _sz++;}void PopBack()//尾删 { if (_sz == 0) { return; } _sz--; }void PushFront(const DateType& x)//头插 { int i = 0; for (i = (_sz) - 1; i >= 0; i--) { _pdate[i + 1] = _pdate[i]; } _pdate[0] = x; _sz++; }void PopFront()//头删{ int i=0; if(_sz==0) { return ; } for(i=0;i<_sz-1;i++) { _pdate[i]=_pdate[i+1]; } _sz--;}void Insert(int pos,const DateType& x)//指定为插入 {int i=0;if(pos<1){return ;}for(i=(_sz)-1;i>=pos-1;i--){ _pdate[i+1]=_pdate[i];} _pdate[pos - 1] = x; _sz++; }void Remove(const DateType& x)//指定值删除 {int i=0,j=0;while(i<_sz){if(_pdate[i]==x)j++;//j记录被删记录的个数else_pdate[i-1]=_pdate[i];i++;}_sz--;}void RemoveAll(const DateType& x)//删除所有 x{{int i=0,j=0;while(i<_sz){if(_pdate[i]==x)j++;//j记录被删记录的个数else_pdate[i-j]=_pdate[i];//前移j个位置i++;}_sz-=j;}}void Sort()//排序{ int i = 0; int j = 0; for (i = 0; i < _sz - 1; i++) { for (j = 0; j < _sz - 1 - i; j++) { if (_pdate[j]>_pdate[j + 1]) { DateType temp = _pdate[j]; _pdate[j] = _pdate[j + 1]; _pdate[j + 1] = temp; } } } }int BinarySearch(const DateType& x)//二分查找法 { int mid = 0; int left = 0; int right = (_sz) - 1; if (_sz == 0) { return 0; } Sort(); while (left <= right) { mid = (left + right) / 2; if (x > _pdate[mid]) { left = mid+1; } else if (x < _pdate[mid]) { right = mid-1; } else { return mid; } } return -1; }private:void checkcapacity(){if(_sz==_capacity){int Newcapacity=_capacity+10;DateType* tmp=new DateType[Newcapacity];memcpy(tmp,_pdate,_sz*sizeof(DateType));_pdate=tmp;_capacity=Newcapacity;}}DateType* _pdate; int _capacity; int _sz;};ostream& operator<<(ostream& os,SeqList &seq){for(int i=0;i<seq._sz;i++){os<<seq._pdate[i]<<" ";}cout<<endl;return os;}
测试用例int main(){ SeqList pSeq; pSeq.PushBack(1);pSeq.PushBack(2);pSeq.PushBack(3);pSeq.PushBack(4);cout<<pSeq<<endl;pSeq.PopBack();cout<<pSeq<<endl;pSeq.PushFront(9);cout<<pSeq<<endl;pSeq.PopFront();cout<<pSeq<<endl;pSeq.Insert(3,10);cout<<pSeq<<endl;pSeq.Remove(2);cout<<pSeq<<endl;pSeq.RemoveAll(2);cout<<pSeq<<endl;pSeq.Sort();cout<<pSeq<<endl;int ret=pSeq.BinarySearch(1);printf("第%d位\n",ret+1);system("pause");return 0;}
0 0
- 顺序表(C++)
- C+顺序表
- 线性顺序表C
- C-回文[顺序表]
- 【C++】实现顺序表
- 【C语言】顺序表
- 【C++】顺序表
- 顺序表C版
- 【c++】顺序表
- 顺序表 - C语言
- C语言:顺序表
- C语言顺序表
- C语言顺序表
- 【c++】实现顺序表
- 顺序表(c/c++)
- 【顺序表】 c语言的顺序表
- C语言实现顺序表
- 数据结构---顺序表c实现
- Matplotlib 学习笔记
- Oracle-约束小结
- mark
- PHP常用函数
- 区块链要怎么开发
- 【c++】顺序表
- CCF 201609-1 最大波动 解题报告 简单模拟
- static 变量和方法
- 内联元素的padding,margin,border等不起作用的原因
- HDU 5915 (二分 主席树)
- 本地git仓库提交远程失败的解决办法
- 【c++】单链表
- web常用标签
- 为什么C++不能有虚构造函数,却可以有虚析构函数