91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++如何使用順序表

發布時間:2020-07-22 14:36:38 來源:億速云 閱讀:144 作者:小豬 欄目:編程語言

小編這次要給大家分享的是C++如何使用順序表,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

#include <iostream> 
using namespace std; 
 
typedef int DataType; 
 
class SeqList 
{ 
public: 
 SeqList() 
 :_a(NULL) 
 , _size(0) 
 , _capacity(0) 
 {} 
 
 SeqList(const SeqList& s) 
 :_a(new DataType[s._size]) 
 , _size(s._size) 
 , _capacity(s._capacity) 
 { 
 memcpy(_a, s._a, sizeof(DataType)*s._size); 
 } 
 
 SeqList& operator=(const SeqList& s) 
 { 
 if (this != &s) 
 { 
  DataType* tmp = new DataType[s._size]; 
  delete[] _a; 
  _a = tmp; 
  memcpy(_a, s._a, sizeof(DataType)*s._size); 
  _size = s._size; 
  _capacity = s._capacity; 
 } 
  
 return *this; 
 } 
 
 //SeqList& operator=(SeqList s) //若傳引用會改變引用對象的值 
 //{ 
 // swap(_a, s._a); 
 // swap(_size, s._size); 
 // swap(_capacity, s._capacity); 
 
 // return *this; 
 //} 
 
 ~SeqList() 
 { 
 if (_a) 
 { 
  delete[] _a; 
 } 
 } 
 
 void PushBack(DataType d) 
 { 
 CheckCapacity(); 
 _a[_size] = d; 
 _size++; 
 } 
 
 void PopBack() 
 { 
 if (_size > 0) 
 { 
  _size--; 
 } 
 else 
 { 
  cout << "順序表為空" << endl; 
 } 
 } 
 
 void PushFront(DataType d) 
 { 
 CheckCapacity(); 
 
 int i = (int)_size; 
 for (; i > 0; i--) 
 { 
  _a[i] = _a[i - 1]; 
 } 
 _a[0] = d; 
 ++_size; 
 } 
 
 void PopFront() 
 { 
 if (_size > 0) 
 { 
  int i = 0; 
  for (; i < (int)_size; i++) 
  { 
  _a[i] = _a[i + 1]; 
  } 
  _size--; 
 } 
 else 
 { 
  cout << "順序表為空" << endl; 
 } 
 } 
 
 void Print() 
 { 
 if (_size > 0) 
 { 
  int i = 0; 
  for (; i < (int)_size; i++) 
  { 
  cout << _a[i] << " "; 
  } 
  cout << endl; 
 } 
 else 
 { 
  cout << "順序表為空" << endl; 
 } 
 } 
 
 void Insert(size_t pos, DataType d) //在pos之前插入一個數據 
 { 
 CheckCapacity(); 
 
 if (_size > 0) 
 { 
  if (pos <= 0 || pos > _size) 
  { 
  cout << "pos位置非法" << endl; 
  } 
  else 
  { 
  int i = 0; 
  for (i = (int)_size + 1; i > pos - 1; i--) 
  { 
   _a[i] = _a[i - 1]; 
  } 
  _a[pos - 1] = d; 
  _size++; 
  } 
 } 
 else 
 { 
  PushFront(d); 
 } 
  
 } 
 
 void Erase(size_t pos) //刪除pos位置的數據 
 { 
 if (_size > 0) 
 { 
  if (pos <= 0 || pos > _size) 
  { 
  cout << "pos位置非法" << endl; 
  } 
  else 
  { 
  int i = pos - 1; 
  for (; i < (int)_size; i++) 
  { 
   _a[i] = _a[i + 1]; 
  } 
  _size--; 
  } 
 } 
 else 
 { 
  cout << "順序表為空,無法進行刪除" << endl; 
 } 
 } 
 
 int Find(DataType d) 
 { 
 int i = 0; 
  
 for (; i < (int)_size; i++) 
 { 
  if (_a[i] == d) 
  { 
  return i + 1; 
  } 
 } 
 return 0; 
 } 
 
private: 
 void CheckCapacity() 
 { 
 if (_size == _capacity) 
 { 
  _capacity = _capacity * 2 + 3; 
  _a = (DataType*)realloc(_a, sizeof(DataType)*_capacity); 
 } 
 } 
 
private: 
 DataType* _a; 
 size_t _size; 
 size_t _capacity; 
}; 

以下為測試函數

#include "SeqList.h"; 
 
void Test1() 
{ 
 SeqList s1; 
 s1.PushBack(1); 
 s1.PushBack(2); 
 s1.PushBack(3); 
 s1.PushBack(4); 
 s1.Print(); 
 SeqList s2(s1); 
 s2.Print(); 
 s2.PopBack(); 
 s2.PopBack(); 
 s2.PopBack(); 
 s2.PopBack(); 
 s2.PopBack(); 
 s2.Print(); 
 s2.PushFront(4); 
 s2.PushFront(3); 
 s2.PushFront(2); 
 s2.PushFront(1); 
 s2.Print(); 
 s2.PopFront(); 
 s2.Print(); 
 s2.PopFront(); 
 s2.PopFront(); 
 s2.PopFront(); 
 s2.PopFront(); 
 s2.PopFront(); 
 SeqList s3; 
 s3 = s1; 
 s3.Print(); 
} 
 
void Test2() 
{ 
 SeqList s1; 
 s1.PushBack(1); 
 s1.PushBack(2); 
 s1.PushBack(3); 
 s1.PushBack(4); 
 s1.Print(); 
 
 //s1.Insert(1, 0); 
 //s1.Print(); 
 
 /*s1.Erase(1); 
 s1.Erase(1); 
 s1.Erase(1); 
 s1.Erase(1); 
 s1.Print();*/ 
 
 int i = s1.Find(5); 
 cout << i << endl; 
} 
 
int main() 
{ 
 //Test1(); 
 Test2(); 
 
 system("pause"); 
 return 0; 
} 

看完這篇關于C++如何使用順序表的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆子县| 漳州市| 澄迈县| 凤翔县| 苏尼特左旗| 临城县| 定兴县| 延庆县| 秦安县| 略阳县| 达州市| 丰顺县| 望都县| 普格县| 应用必备| 林周县| 河间市| 仪陇县| 锦州市| 商水县| 三原县| 宝坻区| 盘锦市| 舞阳县| 望谟县| 瑞丽市| 筠连县| 子洲县| 蓝山县| 苍溪县| 信宜市| 金坛市| 锦州市| 高阳县| 红河县| 商洛市| 钟祥市| 婺源县| 凌海市| 犍为县| 宜黄县|