可惡的C語言 結構體與鍊錶

2021-10-25 05:19:09 字數 4428 閱讀 7225

(1)結構體宣告

struct 結構體名稱//struct說明這是乙個結構體的宣告

;//例如:

struct book

;

(2)定義結構體型別變數

struct 結構體名稱 結構體變數名

(3)初始化結構體變數

struct book book=

;

(4)初始結構體的指定成員值

其語法與陣列指定初始化元素類似,不過結構體指定初始化成員使用點號(.)運算子和成員名。

比如只初始化book的price成員:

strut book book = ;

也可以不按結構體宣告的成員順序進行初始化:

struct book book=

;

(5)結構體巢狀
#include

struct date

;struct book

;book=

,"zddddd"};

intmain

(void

)

(1)定義結構體陣列的第一種方法
struct 結構體名稱

陣列名[長度];

(2)定義結構體陣列的第二種方法

先宣告乙個結構體型別(比如上面的book),再用此型別定義乙個結構體陣列。

struct 結構體名稱

;struct 結構體名稱 陣列名[長度];

(3)初始化結構體陣列
struct book book[3]

=,,};

(1)通過結構體指標訪問結構體成員的第一種方法

(結構體指標).成員名//.運算子的優先順序比 * 高

(2)通過結構體指標訪問結構體成員的第二種方法

結構體指標->成員名

#include

struct date

;struct book

;book=

,"zddddd"};

intmain

(void

)

鍊錶包含兩個域,乙個是資訊域,另乙個是指標域。資訊域用於存放節點內容,指標域是用於指向下乙個節點。鍊錶是通過指標串還需要乙個頭指標,指向第乙個節點。連到一起的。當最後乙個指標指向null時,鍊錶結束。

#include

struct book

;int

main

(void

)

(1)頭插法
#include

#include

struct book

;void

getinput

(struct book *book)

void

addbook

(struct book *

*library)

getinput

(book);if

(*library!=

null

)else

}void

printlibrary

(struct

*library)

}void

releaselibrary

(struct book *library)

}int

main

(void

)

(2)尾插法
#include

#include

struct book

;void

getinput

(struct book *book)

void

addbook

(struct book *

*library)

getinput

(book);if

(*library!=

null

) temp->next=book;

//插入資料

book->next=

null;}

else

}void

printlibrary

(struct

*library)

}void

releaselibrary

(struct book *library)

}int

main

(void

)

(3)再定義乙個指標指向尾部的尾插法
#include

#include

struct book

;void

getinput

(struct book *book)

void

addbook

(struct book *

*library)

getinput

(book);if

(*library!=

null

)else

}tail=book;

void

printlibrary

(struct

*library)

}void

releaselibrary

(struct book *library)

}int

main

(void

)

可對單鏈表進行搜尋操作,比如輸入書名或作者,就可找對相關的節點資料。

#include

#include

struct book

;void

getinput

(struct book *book)

;void

addbook

(struct book *library)

;void

printflibrary

(struct book *library)

;struct book *

searchbook

(struct book *library,

char

*target)

;void

printfbook

(struct book *book)

;void

releaselibrary

(struct book *

*bilrary)

;void

getinput

(struct book *book)

void

addbook

(struct book *

*library)

getinput

(book);if

(*library!=

null

)else

}tail=book;

void

printlibrary

(struct

*library)

}struct book *

searchbook

(stuct book *library,

char

*target)

book=book->next;

}return book;

}void

printfbook

(struct book *book)

void

releaselibrary

(struct book *library)

}int

main

(void

)while

(ch!=

'y'&&ch!=

'n');if

(ch==

'y')

else

}printf

("請問是否需要列印圖書資訊(y\n)")do

while

(ch!=

'y'&&ch!=

'n');if

(ch==

'y')

printf()

;scanf

("%s"

,input)

;

book=

searchbook

(library,input)

;else

while

((book=

searchbook

(book->next,input))!=

null);

}releaselibrary

(&library)

;addbook

(&library)

;return0;

}

C語言 鍊錶 結構體

目的 1.編寫手機 薄管理程式,用結構體實現下列功能 1 手機 薄含有姓名 宅電 手機3項內容,建立含有上述資訊的 簿。2 輸入姓名,查詢此人的號碼。3 插入某人的號碼。4 輸入姓名,刪除某人的號碼。5 將以上功能分別用子函式實現,編寫主函式,可以根據使用者的需要,呼叫相應的子函式。建議用結構體和鍊...

可惡的C語言 列舉與結構

一種使用者定義的資料型別,用enum來宣告 enum 列舉型別名字 列舉型別名字通常並不常用,使用的是在大括號裡的名字,因為它們就是常量符號,它們的型別是int,值依次從0到n。如 enum colors 這樣子就可建立了三個常量,red的值是0,yellow的值是1,green是2。列舉的意義就是...

C語言結構體和C語言鍊錶

前言 對於c語言指標方面,因為博主目前還不能夠達到自己想要的水平,所以我就不在這裡班門弄斧了,現在總結一下結構體,等再過段時間,我把指標弄的爐火純青的成都的時候,我在來獻醜吧 0v0 三 結構體型別變數的賦值於初始化 四 結構體型別陣列的定義於引用 我們之前學過一些構造型別,陣列就是其中之一,但是陣...