- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linked Lists(鏈結串列)
鏈結串列 Linked Lists 學習目標 指標與各種資料結構的關係及在電腦程式中的作用。 鏈結串列的種類、資料結構及演算法。 鏈結串列在電腦程式中的實際應用。 指標 Pointer 基本觀念 指標是一個用來指示資料存在於記憶體中的位址標示器 在指標的運用中,我們可瞭解到資料與位址間的關係,進而對記憶體配置有很大的幫助。 在C語言中,若某變數所含的是一個記憶體位址,此變數稱為指標變數。 指標變數的宣告 變數資料型態*變數名稱; Int *ptr; ptr為指標變數 ptr代表一個位址 注意事項 ptr為指標變數,ptr代表一個位址 ? *ptr代表此位址內的資料 ? ptr所指向此位址之變數型態為整數 (int) ? 指標變數宣告的關鍵字為*;指標變數的資料型態也分為整數 (int) 、浮點數 (float) 、字元 (char) ? 為另一重要符號,為一個特殊運算子,目的為傳回運算元之位址 ? 為什麼scanf()中之所有引數變數一定要加上符號???.......... ? 指標與函數間的關係 Call by value的引數傳遞方式 被呼叫函數不能直接更改呼叫函數中的變數 Call by reference是以指標當作函數的引數 上述的狀況均迎刃而解 也不受函數返回值(return)只能有一個的影響 指標與陣列的關係 我們可以將指標與陣列的關係來做一對比 例如有一整數陣列名為array,其陣列大小為10個,其內容分別是1,2,3,4,5,6,7,8,9,10: int array[10]={ 1,2,3,4,5,6,7,8,9,10} 一維陣列 我們可以用指標來存取陣列,陣列是一連續的記憶體空間.假設有一陣列如下: int array[10] = {1,2,3,4,5,6,7,8,9,10}; int *ptr = array; 二維陣列 int array[2][5] = {1,2,3,4,5,6,7,8,9,10}; int *ptr = array; 指標與陣列的混合應用 指標之運算有兩種:(+)、(-)。 指標與結構的關係 指標可以指向一個相關之結構變數。如欲由此指標存取結構變數之項目資料時,其格式如下: 指標變數名稱->結構變數之項目名稱 *ptr - height 結構宣告: struct gstudent { char Name [10] int Age float weight; long height; } 指標指向結構: *ptr - height 指標範例 (A) void main() { int s[ ] = {3,2,5,7,9}, *q; q=s; printf(“%d\n”,*q); ? 3 printf(“%d\n”,(*q)+3); ? 3 printf(“%d\n”,*(q+4)); ? 9 /* q=s不動 */ q+=2; /* q往後移 2 位 */ printf(“%d\n”,*q); ? 5 } (B) void main() { int s[ ] = {1,3,7,9,6,8}, *q; q=s; /* q=s不動 */ printf(“%d\n”,*q++); ? 1 /* q++ ~~ q=q+1 */ //找到 *q 後再增加一單位位址 printf(“%d\n”,(*q)+2); ? 5 /* 3+2 */ printf(“%d\n”,*(q+2)); ? 9 /*q以下2單位位址所對應之數值*/ q++; /*q 增加一單位 */ /*q往後移 1 位 */ printf(“%d\n”,*q); ? 7 } 鏈結串列 Linkedlist 典型的鏈結串列 循環式的鏈結串列 (Circularly linked list) 雙重鏈結串列 (Doubly linked list) 樹 (tree) 圖型 (Graph) 鏈結串列的定義 鏈結串列(Linkedlist)也是常用的資料結構裡面的元素稱為節點(node) 有兩個節點比較特別,就是串列的頭(head)與尾(tail) 每個節點除了含有一些成員屬性之外,還包含了一個指向下一節點的鏈結(link)。 有次序排列之資料稱為串列(List),如一年四季,數字0~9 陣列、堆疊及佇列皆屬於串列(List)的結構 鏈結串列(Linked List)的頭與尾決定於串列中的節點所在的位置,對於串列的處理,都是從頭節點開始,然後一一地找到其他的節點。 鏈結串列特點 由節點所串成(利用鏈結)的串列稱之。 鏈結串列是一種有順序的串列,可以用陣列,也可以用結構。 鏈結串列各
文档评论(0)