位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

在C語言用自引用結(jié)構(gòu)實(shí)現(xiàn)鏈表結(jié)構(gòu)需要解決三個(gè)問題

提問人:楊紫紅發(fā)布時(shí)間:2020-11-17
(1)必須指出鏈表第一個(gè)結(jié)點(diǎn)的位置,否則無法存取該鏈表中的結(jié)點(diǎn)
    實(shí)現(xiàn)方法:定義一個(gè)指向該結(jié)構(gòu)對象的指針,或定義一個(gè)該結(jié)構(gòu)類型的變量,使其指向鏈表的第一個(gè)結(jié)點(diǎn)即可。如:
            struct node *head;
 
(2)在建立一鏈表時(shí),如何獲得下一個(gè)新的結(jié)點(diǎn)的存放空間。     
    實(shí)現(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é)點(diǎn)的上一結(jié)點(diǎn)*/
另外:free函數(shù)可用于釋放內(nèi)存區(qū)。
  如:free(p);  表示釋放由p指向的內(nèi)存區(qū),使這部分內(nèi)存區(qū)能被其他變量使用。
 
(3)要明確指出鏈表的鏈尾。
    實(shí)現(xiàn)方法:通常把最后結(jié)點(diǎn)中的成員項(xiàng)next置為空指針NULL即可。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部