指標和引用
用指標處理鍊錶
一、鍊錶概述
鍊錶是由乙個個結點組成,每乙個結點是乙個結構體型別的變數,各個結點的型別相同,但其位址不一定連續。具體結點的個數根據需要動態開闢。
每個結點由兩部分組成,第一部分放若干資料,第二部分是指標變數,放下一結點的位址。煉表頭是一指標變數,放第乙個結點的位址,若結點的第二部分的值為null,表示此鍊錶結束。
二、如何處理鍊錶
1、建立鍊錶
struct student
;
#define stu struct student
stu
;
例:
struct student *p; //定義了結構體型別的指標
p=new student; //用new開闢一結構體空間,將位址賦給p
p->num=10; //為新開闢的結構體空間中的num成員賦值
1、首先定義兩個結構體型別的指標 stu *p1, *p2;
2、用new在記憶體中開闢乙個結構體變數的空間,將位址賦給p1。
p1=new student; /* stu struct student */
3、將資料賦給剛開闢的變數空間。
cin>>p1->num>>p1->score;
4、若輸入的資料有效,將首位址作為煉表頭,head=p1; 令p2=p1,p1繼續用new開闢新的記憶體空間。
p1=new student; /* stu struct student */
5、將下乙個資料賦給新開闢的變數空間。
cin>>p1->num>>p1->score;
6、若輸入的資料有效,將p2與p1連線起來,p2->next=p1 再令p2=p1,p1繼續用new開闢新的記憶體空間。做5。若輸入的資料無效,p2就是鍊錶的尾,則p2->next=null。
2、輸出鍊錶
void print(stu * head)
}
3、刪除鍊錶
1、首先定義兩個結構體型別的指標 stu *p1, *p2;
2、將鍊錶的表頭賦給p1, p1=head;
3、判斷p1所指向的結點是否是要刪除的結點 p1->num a1。
4、若p1->num!=a1, p2=p1; p1指向下乙個結點p1=p1->next,繼續判斷下乙個結點是否是要刪除的結點。繼續做3。
5、若p1->num= =a1,則p1當前指向的結點就是要刪除的結點,將p2的指標成員指向p1所指的下乙個結點。
這樣就刪除了乙個結點。
特殊情況:
1、若煉表為空鍊錶,返回空指標。
2、刪除的結點為頭結點時,head指向下乙個結點
3、鍊錶內沒有要刪除的結點,返回提示資訊。
4、插入結點:要插入結點的鍊錶是排序的鍊錶。插入10。
1、定義三個結構體指標變數 stu *p1,*p2,*p0; p0指向要插入的結點。p1=head;
2、比較p1->num 與p0->num,若p1->numnum,p2=p1; p1=p1->next; 繼續比較。
3、若p1->num> =p0->num,p0應插在p1與p2之間,則p2->next=p0 ; p0->next=p1;
特殊情況:
1、若煉表為空鍊錶,將插入結點作為唯一的結點,head=p0;返回。
2、若插入結點中的資料最小,則插入的結點作為頭結點。
p0->next=head;
head=p0;
3、插入到鏈尾,插入結點為最後乙個結點。
p2->next=p0;
p0->next=null;
用typedef定義型別
typedef定義新的型別來代替已有的型別。
typedef 已定義的型別 新的型別
typedef float real
real x, y; *****> float x, y;
1、typedef可以定義型別,但不能定義變數。
2、tyoedef只能對已經存在的型別名重新定義乙個型別名,而不能建立乙個新的型別名。
1、先按定義變數的方法寫出定義體
2、把變數名換成新型別名
3、在前面加typedef
4、再用新型別名定義變數
typedef:編譯時處理,定義乙個型別替代原有的型別。
C 指標和引用
在深入介紹之前我們首先來看一下指標和引用的定義 指標和引用的區別,然後分別針對指標和引用展開討論,深入細節為何有這些差異。指標和引用的定義,下面用通俗易懂的話來概述一下 而宣告指標是可以不指向任何物件,也正是因為這個原因,使用指標之前必須做判空操作,而引用就不必。其次,引用不可以改變指向,對乙個物件...
C 引用和指標
引用和指標看上去差不多,看上去差不多,其實男寶寶和女寶寶是不一樣的 用起來還是有一定差距。本人菜鳥僅將遇到的問題記錄備案,以便日後翻查 ptrfunc.h ifndef ptrfunc h define ptrfunc h typedef int func int,int struct aa end...
C 指標和引用
有了變數名,為什麼還需要乙個別名呢?c 之所以增加引用型別,主要是把它作為函式引數,以擴充函式傳遞資料的功能 到目前為止我們介紹過函式引數傳遞的兩種情況 1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的 如果在執行函式期間形參的值發生變化,並不傳回給實參 因為在呼叫函式時,形參和實...