- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LinkedLists(链结串列).ppt
鏈結串列;學習目標 ;指標;基本觀念;指標變數的宣告;ptr為指標變數;注意事項 ;指標與函數間的關係; #include stdio.h
change(x,y)
int *x,*y;
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void main(void)
{
int m=3,n=4;
printf( m = %d n= %d \n\n,m,n);
printf( m = %d n= %d \n\n,m,n);
change(m,n);
printf( m = %d n= %d \n,m,n);
};指標與陣列的關係;陣列位址;#include stdio.h
void main(void)
{ int array[10]={ 1,2,3,4,5,6,7,8,9,10};
int count;
for ( count=0 ;count10; ++count )
printf(array[%d]=%d
--*(array+%d\)=%d\n,count,
array[count], count,
*(array+count));
};一維陣列
我們可以用指標來存取陣列,陣列是一連續的記憶體空間.假設有一陣列如下:
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; ;指標???陣列的混合應用;指標與結構的關係;指標範例;(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
};鏈結串列;典型的鏈結串列 ;循環式的鏈結串列 (Circularly linked list) ;雙重鏈結串列 (Doubly linked list) ;樹 (tree) ;圖型 (Graph) ;鏈結串列的定義;有次序排列之資料稱為串列(List),如一年四季,數字0~9
陣列、堆疊及佇列皆屬於串列(List)的結構
鏈結串列(Linked List)的頭與尾決定於串列中的節點所在的位置,對於串列的處理,都是從頭節點開始,然後一一地找到其他的節點。;鏈結串列特點;鏈結串列的種類;雙向鏈結=>節點至少包含資料及左右兩個結鏈。
;陣列與鏈結串列的比較;使用陣列;使用結構;定義;這一個結構包含兩部分:
學號
指向下一個record結構的指標,
這時可以使使用malloc函式向記憶體要求配置記憶體空間,使用方式為:;void main()
{
int i;struct record*phead,*ptr,*pNew;
phead=creat(1); //將第一個節點的位置傳給phead
ptr=phead; //將phead中儲??的第一個節點位置傳給ptr
for(i=2;i=10;i++) //跑9次,每一次加一個節點
{
pNew=creat(i); //將新節點的位置傳給pNew
ptr-next=pNew; //將pNew的位置傳給ptr-next
ptr=pNew; //ptr指向新節點.
};//利用creat可以創造出新結點,而我們需要將新結點接在原串列後,方法是
//1.製造一個新結點.
//2.新結點接在原串列的尾巴,而ptr就是指向串列尾巴的指標.
//3.接著把ptr指向新結點,因為整個串列的最後一個就是最後加入的新結點.;ptr = phead; // ptr指向第一個
while(ptr != NULL) // 直到ptr == NULL時跳出
{
printf(%d\n,ptr-number); // 印出ptr-number
ptr = ptr-next; // 移向下一個節點
}
}
struct record *creat(int number)
{
struct record *New; //
文档评论(0)