結構體和陣列一樣,都是聚合型別,在進行整體初始化的時候只有一次機會,就是在定義的時候(但是可以區域性初始化)
typedef與結構體
不加typedef時定義結構體:
struct student
student1; //student1是結構體的乙個結構體變數,且student未定義,而結構體的名字叫做student
struct student stu1=;//用結構體的話需要這樣用,加struct student
加上typedef:
typedef是為一種型別取別名,而結構體型別也是一種型別,加上typedef之後就是為結構體取了乙個別名,方便在後面引用
typrdef struct student
student; //加了typedef隻後,student叫做結構體型別,相當於為student這個結構體取了乙個別名叫做student
student stu1=;//加上typedef隻後,只需要用stu就行了
結構體成員
結構體成員可以是變數,陣列,指標,還可以是其他結構體
但是注意:結構體成員可以是其他結構體,但是如果結構體成員是自己本身的話,也就是結構體的自引用,只能以指標的形式,因為指標大小固定(32位是4位元組,64位是8位元組)
struct self_ref;
struct self_ref;
結構體成員的訪問
看用.還是-> 看.或者->前面是什麼,前面是變數就用. 前面是指標就用->
struct a
;struct b
bb;int main()
帶頭節點
typedef struct node
node,*plist;
初始化:
void initlist(plist plist)
plist->next=null;
}
頭插法:
node* getnode(int val)//得到乙個節點
void inserthead(plist plist,int val) // 頭插法
尾插法:
void inserttail(plist plist,int val)
pcur->next = pget;
}
列印:
void show(plist plist)
printf("\n");
}
得到鍊錶的長度:
int getlength(plist plist)
return count;
}
單鏈表結構
include include typedef struct student node node createlink node head else else p next null return head int lenlink node const head while p next null ...
線性結構 單鏈表
鍊錶定義 使用結點來儲存資料元素。鍊錶優缺點 鍊錶中各資料元素的結點位址則不要求是連續的,因此必須同時儲存元素之間的邏輯關係 鍊錶的插入 刪除操作都比較方便,只需修改指標域的指向即可。單鏈表 include include using namespace std 建立結點 template clas...
資料結構 單鏈表 逆置單鏈表
題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並返回反轉鍊錶後的頭結點。我們可以借助圖來分析一下 我們定義乙個新的頭結點為head,將begin指向head next,當begin不為空的時候,tmp begin,begin begin next,此時tmp是我們要摘下來的結點。tmp nex...