原创 二叉排序樹的簡單實現

#include<iostream> using namespace std; typedef int keyType; typedef struct Node { keyType key; Node *l

原创 派生類的訪問控制

繼承是C++語言的三大特點之一。繼承(或者說派生)機制的作用主要是用於代碼的重用和擴展。 三種派生方式(public,protect,private)的訪問控制 基類的控制類型     派生方式    派生類的控制類型 public ··

原创 連續存儲結構的循環隊列實現

1.隊列是一種刪除只能在隊頭,插入只能在隊尾的線性表,循環隊列是爲了克服“假溢出”而提出的一種對隊列的改進,將隊列看成一個首尾相接的環。連續存儲結構的循環隊列是通過數組實現的。 2.操作:先進先出 3.初始化(空隊列):pront = t

原创 二分查找法實現

查找分爲靜態查找和動態查找 靜態查找主要包括順序查找和二分查找(折半查找)。順序查找是我們常用的一種查找方式,它有順序表的順序查找和鏈表的順序查找,這兩部分在前面學習線性表時都有學習。二分查找是一種針對有序表進行的查找,其效率高,比較次數

原创 棧的順序存儲結構的實現

1.順序存儲結構的棧是一種刪除和插入都只能在一端進行操作的線性表,它也叫做一種操作受限的線性表。它的存儲結構是用一組連續的存儲單元依次存放棧中的每個元素。 2.起始端爲棧底,是一種後進先出(LIFO)的線性表。 3.操作都在棧頂進行。 s

原创 雙鏈表的插入和刪除實現

雙鏈表相對於單鏈表,最大的不同就是在它的插入和刪除操作上。在刪除實現時,要注意尾結點的刪除和普通結點的刪除的區別,需分別對待。 以下是我的實現代碼: #include<iostream> using namespace std; str

原创 線性表之一:順序表的實現(詳)

#include<iostream> using namespace std; #define MAXSIZE 100 //注意宏定義不能加“;”,

原创 拷貝構造函數和拷貝賦值函數

拷貝構造函數和拷貝賦值函數是一對很容易混淆的概念,下面根據我自己的理解爲大家梳理一下。由於我也只是個新手,難免會有理解錯誤,還請大家指正。 一.拷貝構造函數 拷貝構造函數是一種特殊的構造函數,其特殊之處就在於它是用一個已知的類對象來初始化

原创 用字符數組和字符串指針定義字符串常量時需要注意的一點

如下面兩段代碼:  char b[ ]  = "I am a Chinese"; char * a  = "I am a Chinese"; 它們分別是用字符數組和字符串指針來定義了字符串常量,一般情況下的使用都是互通的,即可以互換。但是

原创 鏈表棧的實現

鏈表棧,簡稱鏈棧,它是用一組不連續的存儲結構來存儲棧元素的線性表,主要通過指針實現其線性。 1.主要掌握兩個結構體。 struct node { datatype data; node *next; }; struct stack {

原创 創建二叉樹

二叉樹的遍歷是一個比較重要而又簡單的問題,二叉樹的創建是又一較難的問題,我一直都有個疑問:數據是怎麼存放進二叉樹的結構中去的?現在看來,其實創建二叉樹時,不同的輸入次序也就決定了二叉樹的不同。創建二叉樹一般採用遞歸方法,具體如下代碼實現過

原创 帶頭結點的單鏈表實現

下面是本人總結的關於帶頭結點的單鏈表的實現代碼。供大家參考學習。 #include<iostream> using namespace std; typedef char datatype; struct node {

原创 插入排序

插入排序:不斷地將待排序序列插入到有序序列中,使有序序列逐漸擴大,直至所有待排元素全插入到有序序列中來。 直接插入排序和希爾排序 直接插入排序是一種比較簡單的排序方法,它的基本思想是將待排序列中的每個元素依次插入到有序序列中。 希爾插入排

原创 派生類的構造函數

基類的構造函數不能被派生類繼承,所以派生類必須自己要有自己的構造函數。那麼派生類的構造函數有哪些需要注意的呢? 1.派生類的構造函數形式: class A { public: A(參數列表){} }; class B :publ

原创 帶頭單鏈表刪除特定元素實現

要求:輸入鏈表元素,再輸入需要刪除的元素,最後顯示刪除元素後的鏈表元素 例如: 輸入:3->4->7->3->4     3 輸出:4->7->4 實現代碼如下: #include<iostream> using namespace st