基於C C 語言資料結構之線性表(一)

2021-07-23 16:56:26 字數 2918 閱讀 2515

資料結構學習筆記:

資料結構的重要性:資料結構我感覺很重要,不僅僅是考試很重要,而且在以後程式設計師事業上都是尤為重要的,知乎上有網友評價資料結構是最重要的程式設計基本能力,沒有之一。我感覺這個說法很對,並且大家都知道,資料結構與演算法這種說法常常被大家使用,就是因為資料結構是演算法的基本前提,不懂資料結構,演算法肯定學的很毛糙,根本就沒有真正的高效可言,那也自然稱不上是演算法啦。所以大家要重視資料結構,雖然剛開始可能會不理解,從不理解到理解,才是真正的學習過程,如果你看乙個會乙個,你就根本就不用學習,因為已經是天才啦,這正如我們鍛鍊,鍛鍊的時候真正起作用的不是你輕輕鬆鬆完成幾個俯臥撐,跑了幾圈,而是你最累,最不想繼續運動的階段。總之學習也是欲速則不達吧,堅持學習,一定會從不理解到掌握。

線性表安裝儲存結構分為:順序表和鏈式表

順序表在計算機中以陣列的形式儲存是指位址連續的儲存單元一次儲存資料元素的線性結構

線性表中所有元素的資料型別都是相同的

線性表中的元素具有邏輯上的順序性。

受儲存空間限制,線性表只能有限儲存。

線性表中所有元素的資料型別都是相同的。

在順序表中,元素都是乙個挨乙個儲存,元素都集中在一段區間內,相對儲存密度大

順序表在訪問元素時,可以通過表頭元素的位址和元素的編號(下標)在 \mathcal(1)o(1) 時間內訪問到它。

#include #include class vector 

~vector()

};int main()

主要差別是  是否呼叫析構函式

delete data 會自動呼叫data陣列每個元素的析構函式

delete data則不會

delete data是清除data的記憶體單元,而deletedata的記憶體單元。

data 為乙個指標,而delete date中的data為乙個指標陣列的首指標

使用std命名空間中的cout和endl。如果不這樣的話,每次使用cout和endl都要加上std::

例如:std::cout<< "hello world"用了名字空間 std 你也可以在入口函式前面 寫 using namespace std;來代替。而在後面 就只要直接用 cout 和endl;

system就是呼叫從程式中呼叫系統命令(和shell命令)。  

system("pause")就是從程式裡呼叫「pause」命令;  

而「pause」這個系統命令的功能很簡單,就是在命令列上輸出一行類似於

「press  any   key   to  exit」

請按任意鍵繼續. . .

的字,等待使用者按乙個鍵,然後返回。

插入:

刪除:

#include #include using std::cout;

using std::endl;

class vector

if(length >= size)

for(int i = length; i > loc; --i)

data[loc]= value;

length++;

returntrue;

}intsearch(int value)

for(int i = index + 1; i < length; ++i)

length= length - 1;

returntrue;

}voidprint()

cout<

要求:在前面的課程中,我們學習了順序表的構造、插入、擴容、查詢、刪除、遍歷這 6 種操作。然而並不滿足於實現這些基本的操作,於是蒜頭君想到了一種新的操作:迴圈左移。

對於順序表 l=(a_0,a_1, ..., a_)l=(a​0​​,a​1​​,...,a​n−1​​),迴圈左移 kk 位意味著將順序表變為 l^k=(a_k, a_, ..., a_, a_0, a_1, ...,a_)l​k​​=(a​k​​,a​k+1​​,...,a​n−1​​,a​0​​,a​1​​,...,a​k−1​​)。

比如:長度為 88 的順序表 (1, 2, 3, 4, 5, 6, 7,8)(1,2,3,4,5,6,7,8),迴圈左移 33 位後的結果為 (4, 5, 6, 7, 8, 1, 2, 3)(4,5,6,7,8,1,2,3)。

輸入格式

第一行輸入兩個整數 n(1\leq n \leq 100)n(1≤n≤100) 和 k(0 \leq k \leq n)k(0≤k≤n),分別表示順序表的元素個數和迴圈左移的位移量。

第二行一共 nn 個整數 a_i(0 \leq a_i \leq10000)a​i​​(0≤a​i​​≤10000),表示順序表中元素的值。

輸出格式

輸出只有一行,輸出 nn 個整數,順序輸出迴圈左移後順序表中每個元素的值,每個元素之間用乙個空格分隔。行末不要有多餘空格。

樣例輸入

8 31 2 3 4 5 6 7 8

樣例輸出

4 5 6 7 8 1 2 3

**:#includeusing std::cout;

using std::cin;

using std::endl;

class ver

~ver()

void expand()

}void print(int n)

cout<=1;i--)

data[0]=temp;}}

void leftmove(int n,int k)

版權說明visual studio 2010 直接複製貼上會出現亂碼的解決方法

編譯執行環境:dev-c++

基於C C 語言資料結構之線性表(一)

資料結構的重要性 資料結構我感覺很重要,不僅僅是考試很重要,而且在以後程式設計師事業上都是尤為重要的,知乎上有評價資料結構是最重要的程式設計基本能力,沒有之一。我感覺這個說法很對,並且大家都知道,資料結構與演算法這種說法常常被大家使用,就是因為資料結構是演算法的基本前提,不懂資料結構,演算法肯定學的...

基於C C 語言資料結構之線性表(二)

include 請在下面實現結點類 node class node 請在下面實現鍊錶類 linkedlist class linkedlist linkedlist int main void insert node node,int index head node return if index ...

資料結構之線性表(一)

線性表的順序儲存結構 1.標頭檔案sqlist.h define true 1 define false 0 define ok 1 define error 0 define elemtype int define list init size 10 define list increment 1...