指標 資料結構 線性表基礎(基於c )

2021-09-11 18:53:24 字數 2637 閱讀 4703

在記憶體中一般是通過變數名來對記憶體單元進行訪問操作。但其實,程式編譯後已經將變數名轉換為變數的位址,對變數名的訪問都是通過位址進行的。

i_pointer=&i;
&是取位址運算子,&i 是  i 的位址。位址指向該變數單元(通過位址就能找到該變數單元)。

因此,形象地稱:位址指標(通過它能訪問以他為位址的記憶體單元)。乙個變數的位址稱為該變數的指標。對應,乙個變數的指標就是變數的位址

乙個專門用來存放位址(即指標)的變數,指標變數。

& 取位址運算子;

* 指標運算子(間接訪問運算子)

&a 為變數a的位址,*p 指標變數p所指向的儲存單元。

例子1:

#include using namespace std;

int main()

for(int i=0;i<10;i++)

for(int i=0;i<10;i++)

return 0;

}

例子3:

指標變數法表示陣列。

#include using namespace std;

int main()

for(int i=0;i<10;i++)

return 0;

}

注:1. 例子1、2 對每個a[ i ](或「*(a+i)」)都要計算位址,然後再訪問元素。而例子3 是用指標變數直接指向元素,不必每次都重新計算位址。例子3 的效率和執行速度都是三個中最高的(但沒有下標法直接)。

2. 注意陣列越界問題!

陣列名代表陣列首元素位址。用陣列名做函式引數傳遞的是陣列首元素所對應的位址。因此,用指標變數作函式形參,同樣可以接受從實參傳來的陣列首元素位址(此時,實參是陣列名)。

例子4:

將10個整數按由小到大的順序排列。

#include using namespace std;

int main()

pai(a,10);

for(p=a;p<(a+10);p++)

return 0;

}void pai(int *p,int n)

} }}

注:1. c++編譯系統將形參陣列名一律按照指標變數來處理。

2. 實際上在函式呼叫時並不存在乙個占用儲存空間的形引數組!

3.實參陣列名(如 a )代表乙個固定的位址,或者是說是指標形常量,因此要改變 a 的值是不可能的!

4. 而形參陣列名是乙個指標變數,並非乙個固定的位址。因而它可以可以改變的。比如在函式開始時,就接受了實參陣列首元素位址,在函式執行過程中,它也可以被賦值。

在c++中有三種方法可以訪問乙個字串。

例子1:

用字元陣列來存放乙個字串。

#include using namespace std;

int main()

else

}

注:語句 int (*p)(int a,int b); 中,依次的意義為,第乙個int:指標變數所指向的函式的型別;(*p):p 是指向函式的指標變數;(int,int):p所指向的函式中的形參的函式型別。

在定義指向函式的指標p時,(*p)兩側的括號不能省略,表示 p 先與 * 結合,在與右面的括號結合。如果省略的話,該語句的含義就變成了:定義乙個返回值是指向 int 型的指標的函式!

簡稱為指標函式。在定義時,注意和定義指向函式的指標作區分。

int *p(int x,int y,int z);
例子1:

將若干字串按字母序排序輸出。

#include #include using namespace std;

int main()

; int n=5;

sort(name,n);

for(int i=0;i0)

}}}

指向指標(資料)的指標。就比如剛才的指標資料name,陣列名name就是指標陣列首元素的位址。所以name以及(name+ i )

例子2:

指向字元型資料的指標變數。

#include using namespace std;

int main()

;//定義指標陣列

p=a+2;

cout<<*p

return 0;

}

資料結構線性表c

time limit 1000ms memory limit 65536k 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。第一行輸入整數個數n 第二行輸入n個無序的整數。依次輸出有序鍊錶的結點值。6 33 6 22 9 44 5 5 6 9 22 33 44 ...

基礎資料結構 線性表實現

以下 是對基礎資料結構中的線性表的順序實現,在vs2012下沒問題 include define maxlength 20 struct list 增加元素 int insert list l,int e,int index l.data index e l.length return 1 刪除元素...

基礎資料結構 線性表 順序表

線性表是n個資料元素的有限序列,資料之間存在順序關係,一般同乙個線性表屬於同一類資料物件 例如a z的字母表 線性表存在唯一乙個首位元素和末位元素,除了第乙個元素和最後乙個元素,每個元素存在著乙個前驅和乙個後繼 a的後繼是b,b的前驅是a 線性表主要有順序表和煉表兩種儲存形式,線性表是一種邏輯結構,...