如圖:頭結點是*L。。。頭結點一般儲存單鏈表的長度的信息。
首節點是(*L)->next。。。是儲存元素的值和下一個元素的位置的信息。
現在我想插入一個新的節點p。。。
第一:新節點的指針域指向首節點。
第二:修改頭結點的指針域,使其指向新節點p。
重點語錄
鏈表是以地址來發現元素的
鏈表讀一個數據,系統就申請一個存儲單元。二者是同步的
c++代碼實現。
#include<iostream.h> typedef int Elemtype; typedef struct node { Elemtype data; struct node *next; }Lnode,*Linklist; void Initlinklist(Linklist &head) { head=new Lnode; if(head!=NULL) head->next=NULL; } void Createlinklist(Linklist &head) { int n; Linklist p; //定義結點類型的指針。這個指針的類型如上圖 cin>>n; for(int i=0;i<n;i++) { p=new Lnode; //為這個結點類型的指針p開辟空間 cin>>p->data; p->next=head->next; //修改新節點的指針域,使其指向首節點 head->next=p; //修改頭結點的指點域,使其指向新節點p } } void Printlinklist(Linklist &head) { Linklist p; p=head->next; while(p!=NULL) //結點數據不為空,就一直輸出結點的值 { cout<<p->data<<"\t"; p=p->next; } } void main() { Linklist head; Initlinklist(head); Createlinklist(head); }