第4周项目3-单链表的应用(2)链表的连接
2016-09-20 17:53
316 查看
问题及代码:
运行结果:
知识点总结:
单链表的插入,算法复杂度是O(m)
学习心得:
还是要熟练掌握单链表的基本操作才能更灵活的应用单链表。
/* * Copyright(c) 2016, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称: * 作 者:路亚丽 * 完成日期:2016年 9月 20日 * 版 本 号:v1.0 * * 问题描述: 已知L1和L2分别指向两个单链表的头结点,且已知其长度分别为m、n,请设计算法将L2连接到L1的后面。实现这个算法,完成测试,并分析这个算法的复杂度。 * 输入描述:L1,L2 * 程序输出:链接后的链表L1 */
#include <stdio.h> #include <malloc.h> typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; //指向后继结点 }LinkList; void InitList(LinkList *&L); //初始化线性表 void DestroyList(LinkList *&L); //销毁线性表 bool ListInsert(LinkList *&L,int i,ElemType e); //插入数据元素 int ListLength(LinkList *L); //求线性表长度 void DispList(LinkList *L); //输出线性表 void InitList(LinkList *&L) { L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->next=NULL; } void DestroyList(LinkList *&L) { LinkList *p=L,*q=p->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p); //此时q为NULL,p指向尾结点,释放它 } void DispList(LinkList *L) { LinkList *p=L->next; while (p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } void Link(LinkList *&L1, LinkList *&L2) { LinkList *p = L1; while(p->next != NULL) //找到L1的尾节点 p = p->next; p->next = L2->next; //将L2的首个数据节点连接到L1的尾节点后 free(L2); //释放掉已经无用的L2的头节点 } bool ListInsert(LinkList *&L,int i,ElemType e) { int j=0; LinkList *p=L,*s; while (j<i-1 && p!=NULL) //查找第i-1个结点 { j++; p=p->next; } if (p==NULL) //未找到位序为i-1的结点 return false; else //找到位序为i-1的结点*p { s=(LinkList *)malloc(sizeof(LinkList));//创建新结点*s s->data=e; s->next=p->next; //将*s插入到*p之后 p->next=s; return true; } } int main() { LinkList *m, *n; int i; ElemType a[]= {1,9,2,8}; ElemType b[]= {3,5,7,4,6,0}; InitList(m); for(i=3; i>=0; i--) ListInsert(m, 1, a[i]); InitList(n); for(i=5; i>=0; i--) ListInsert(n, 1, b[i]); Link(m, n); printf("链接成功后的m:"); DispList(m); DestroyList(m); return 0; }
运行结果:
知识点总结:
单链表的插入,算法复杂度是O(m)
学习心得:
还是要熟练掌握单链表的基本操作才能更灵活的应用单链表。
相关文章推荐
- 第4周项目3-(3)单链表应用、链表递增
- 第四周 项目 3.2 单链表应用之两链表之间的连接
- 第4周项目3-(2)单链表应用、链表连接
- 第四周项目3 单链表应用(2)将两个单链表连接
- 第4周、项目3(2)—单链表应用-连接
- 第4周、项目3(1)—单链表应用-逆置
- 第4周 项目3 - 单链表应用(3)
- 第4周 项目3-单链表应用
- 第四周--单链表应用(两个单链表连接)
- 第4周 项目3-单链表:逆置、连接与递增判断
- 第4周 项目3 - 单链表应用(2)
- 第4周项目3 -- 单链表应用(3)
- 第4周项目3-单链表应用(2)
- 第4周项目3-单链表应用(1)
- 第4周项目3链表应用1
- 第4周、项目3(3)—单链表应用-递增
- 数据结构【线性表(二)链表】项目之线性表的应用:表的自然连接
- 第4周实践项目-- 单链表应用(2)
- 数据结构【线性表(二)链表】项目之单链表:连接
- 第四周项目3-单链表应用(2)连接