日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于链表的学习心得

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于链表的学习心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、對指針的簡單理解 (1)指針即地址,也就是說可以把指針看做一個地址; (2)“int ? ?*a”可以理解成“int* ? ?a”,表明a是一個指針,int*是類型,*a表示指針a所指向的內存的值。
2、對malloc和free函數的簡單理解 malloc函數: (1)從內存中申請分配指定字節大小的內存空間,如malloc(4)、malloc(sizeof(int)); (2)malloc函數返回void *類型,它表示未確定類型的指針,可以強制轉換為其他類型的指針,故有如下: ? ? ? ?int ?*a; ? ? ? ?a=(int ? *)malloc(sizeof(int)); free函數: (1)和malloc函數配套使用,釋放動態申請的空間 (2)free(a);//a是指針
3、鏈表(創建、插入、刪除、打印等) 詳見網站http://www.cnblogs.com/tao560532/articles/2199280.html,解釋得很清楚。以下是我的一些心得。 (1)使用malloc函數需要用到stdlib.h頭文件; (2)建立如下形式的結構體,即結構體內部有指向同種結構體的指針: ?????? struct node ?????? { ??????????? int data; ??????????? …… ????????????struct node? *next;????? ?????? } (3)一般需要創建頭指針(head)、臨時指針(p)和另外一個指針(q)。頭指針用來指向鏈表的開始,臨時指針指向新創建的下一個節點,另外一個指針用來指向當前節點。如以下代碼: struct node
{
?? int data;
?? struct node *next;
}; int main() {
?? struct node *head,*p,*q;
?? int i,n,a;
?? scanf("%d",&n);
?? head=NULL;
?? for(i=1;i<=n;i++)
?? {
????? scanf("%d",&a);
????? p=(struct node *)malloc(sizeof(struct node));//(2)
????? p->data=a;
????? p->next=NULL;//考慮到最后循環結束的時候,做個收尾工作?打印時作為終止判斷?規定如此? ???? if(head==NULL)
??????? ?? head=p;
????? else
????????? ?q->next=p;//(3)
??????q=p; //(1) } a、在第一次循環(也就是在創建第一個節點的時候),指針p指向新開辟的空間的首地址,并把p指針中的next指針指向空域(否則野指針?); b、接著if語句僅在第一次滿足生效,將head指針指向了p開辟的空間的首地址,也就是鏈表的開始處。此后head指針僅僅作為標志鏈表的開始。 c、接著把p值賦給q,因為p下一個循環將會指向新的創建的節點。注意q也有next指針。 d、進入第二次循環,p繼續開路創建下一個節點,到達if判斷語句不滿足后進入else語句,q->next=p表示上一個節點的后續指針指向當前節點(也就是P)。這就好比p是一個開路先鋒,q是后大隊,q可以利用地圖(next)跟蹤到p的所在。 理解順序(1)q=p(2)p去開路(3)q的地圖(next)指向P所開的路。

總結

以上是生活随笔為你收集整理的关于链表的学习心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。