尾插法建立单链表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

尾插法建立单链表

特点:头指针固定不变,新产生的结点总是链接到链表的尾部。

操作步骤:

(1)设head为链表头,last为链表尾结点,head=last=NULL; (2)生成新结点,由p指针指示,并将新结点的地址域清空:p->next=NULL;

(3)如果head为NULL,则head=p;否则last->next=p;

(4)last=p;

(5)重复(2)~(4),继续建立新结点。

头插法建立单链表

特点:新产生的结点作为新的链表头插入链表。

操作步骤:

(1)head=NULL;

(2)生成新结点,指针变量p指向该结点;

(3)p->next=head; head=p;

(4)重复(2)~(3),继续生成下一个链表结点。

1. 输出链表结点

操作步骤:

(1)得到链表头结点的地址 head;

(2)指针变量p=head;

(3)输出p所指结点的成员值;

(4)p后移一个结点,p=p->next;

(5)重复(3)(4),直到链表为空。

2统计链表节点个数

一般情况下,各个单链表中结点个数是随机的,要想知道表中结点数目,必须从表头开始访问到表尾,逐个统计出结点数目。

3. 查找链表的某个结点

在链表上查找符合某个条件的结点,也必须从链表头开始访问链表。

在第n个结点之后插入1个新结点 ,插入操作步骤:

(1)q指针指向新结点,i为已访问过的结点数;

(2)p=head,r指向p结点的前一个结点;

(3)i++,r=p,p=p->next,p结点往前移动一个结点;

(4)若i

(5)若i==0,则链表为空,没有结点,q结点作为链表的第1个结点插入:q->next=head,head=q;

(6)若inext=q,q->next=NULL;

(7)否则,将q结点插入到第n个结点之后,即插入到r结点与p 结点之间:r->next=q,q->next=p;

(8)返回链表头head

删除第n个结点

(1)p=head,q指针指向p所指结点的前1个结点;

(2)i为访问过的结点数目;

(3)i++,q=p,p=p->next,p、q移动1个结点;

(4)若p!=NULL且i

(5)若n==1,则删除第1个结点,将下一个结点作为链表头结点:head=head->next;

(6)若head==NULL,链表为空,不能删除;

(7)若p==NULL,第n个结点不存在,不能删除;

(8)找到第n个结点,删除p结点:

q->next=p->next; p的前1个结点的next值赋值为p的next域;(9)返回head。

相关文档
最新文档