单链表之头插法的理解!
如图:头结点是*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); }