尾插法建立单链表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)若i (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。