在C語言用自引用結(jié)構(gòu)實現(xiàn)鏈表結(jié)構(gòu)需要解決三個問題
提問人:楊紫紅發(fā)布時間:2020-11-17
(1)必須指出鏈表第一個結(jié)點的位置,否則無法存取該鏈表中的結(jié)點
實現(xiàn)方法:定義一個指向該結(jié)構(gòu)對象的指針,或定義一個該結(jié)構(gòu)類型的變量,使其指向鏈表的第一個結(jié)點即可。如:
struct node *head;
(2)在建立一鏈表時,如何獲得下一個新的結(jié)點的存放空間。
實現(xiàn)方法:用C編譯系統(tǒng)提供的庫函數(shù)malloc(size)動態(tài)分配存儲空間得到。
除此之外,還可用calloc函數(shù)。如:
struct node *p1, *p2;
…
p2=(struct node *) malloc(size(struct node));
或: p2=(struct node *) calloc(1, size(struct node));
if (p2= =NULL) exit(0);
p1->next=p2; /*此處設(shè)p1指向新結(jié)點的上一結(jié)點*/
另外:free函數(shù)可用于釋放內(nèi)存區(qū)。
如:free(p); 表示釋放由p指向的內(nèi)存區(qū),使這部分內(nèi)存區(qū)能被其他變量使用。
(3)要明確指出鏈表的鏈尾。
實現(xiàn)方法:通常把最后結(jié)點中的成員項next置為空指針NULL即可。
實現(xiàn)方法:定義一個指向該結(jié)構(gòu)對象的指針,或定義一個該結(jié)構(gòu)類型的變量,使其指向鏈表的第一個結(jié)點即可。如:
struct node *head;
(2)在建立一鏈表時,如何獲得下一個新的結(jié)點的存放空間。
實現(xiàn)方法:用C編譯系統(tǒng)提供的庫函數(shù)malloc(size)動態(tài)分配存儲空間得到。
除此之外,還可用calloc函數(shù)。如:
struct node *p1, *p2;
…
p2=(struct node *) malloc(size(struct node));
或: p2=(struct node *) calloc(1, size(struct node));
if (p2= =NULL) exit(0);
p1->next=p2; /*此處設(shè)p1指向新結(jié)點的上一結(jié)點*/
另外:free函數(shù)可用于釋放內(nèi)存區(qū)。
如:free(p); 表示釋放由p指向的內(nèi)存區(qū),使這部分內(nèi)存區(qū)能被其他變量使用。
(3)要明確指出鏈表的鏈尾。
實現(xiàn)方法:通常把最后結(jié)點中的成員項next置為空指針NULL即可。
繼續(xù)查找其他問題的答案?
相關(guān)視頻回答
點擊加載更多評論>>