第4周项目3-单链表应用(2)

来源:互联网 发布:九次方大数据 上市 编辑:程序博客网 时间:2024/05/21 10:45
/*    *Copyright(c) 2016, 烟台大学计算机学院    *All rights reserved.    *文件名称:单链表应用(2).cpp    *作    者:孟琪琪   *完成日期:2016年 9月 22日       *问题描述:已知L1和L2分别指向两个单链表的头结点,且已知其长度分别为m、n,            请设计算法将L2连接到L1的后面。实现这个算法,完成测试,并分析这个算法的复杂度。  *输入描述:此程序没有输入。   *程序输出:输出调整后的结果。  */      linklist.h:#ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDEDtypedef int ElemType; typedef struct LNode        //定义单链表结点类型{     ElemType data;     struct LNode *next;     //指向后继结点}LinkList; void CreateListF(LinkList *&L,ElemType a[],int n);//头插法建立单链表void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表void InitList(LinkList *&L);  //初始化线性表void DestroyList(LinkList *&L);  //销毁线性表bool ListEmpty(LinkList *L);  //判断线性表是否为空int ListLength(LinkList *L);  //求线性表长度void DispList(LinkList *L);  //输出线性表bool GetElem(LinkList *L,int i,ElemType &e);  //求线性表某个数据元素值int LocateElem(LinkList *L,ElemType e);  //按元素值查找bool ListInsert(LinkList *&L,int i,ElemType e);  //插入数据元素bool ListDelete(LinkList *&L,int i,ElemType &e);  //删除数据元素#endif // LINKLIST_H_INCLUDEDlinklist.cpp:#include <stdio.h> #include <malloc.h> #include "z.h"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的头节点}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 InitList(LinkList *&L) {     L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点    L->next=NULL; }void DispList(LinkList *L) {     LinkList *p=L->next;     while (p!=NULL)     {         printf("%d ",p->data);         p=p->next;     }     printf("\n"); }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;     } }main.cpp:int main() {     LinkList *A, *B;     int i;     ElemType a[]= {1,3,2,9};     ElemType b[]= {0,4,7,6,5,8};     InitList(A);     for(i=3; i>=0; i--)         ListInsert(A, 1, a[i]);     InitList(B);     for(i=5; i>=0; i--)         ListInsert(B, 1, b[i]);     Link(A, B);     printf("A:");     DispList(A);     DestroyList(A);     return 0; }


知识点总结:链表的合并。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果4s电池越来越不耐用怎么办 苹果4s电池不耐用了怎么办 苹果手机4s电池不耐用怎么办 红米4s电池不耐用怎么办 32位app私密相册打不开怎么办 红米手机取卡针断手机里了怎么办 我差评了客服打电话骂我怎么办 顺丰快递在预计时间没有回来怎么办 同款商品比京东便宜怎么办 京东自营不支持7天退货怎么办 天猫买了一个月的电动车坏了怎么办 发票号码和机打号码不一致怎么办 交电费的本子弄丢了怎么办 快递正在派件中发现地址错了怎么办 快递当天送达当天签收还算延怎么办 深圳国税公众号预约取号公司怎么办 社保买了停了2年怎么办 qq号被冻结申请不回来了怎么办 qq号被冻结 手机密保忘了怎么办 微信账号封了2天怎么办 买qq号被申诉找回了怎么办 收到了京东白条的催款通知单怎么办 成都买房社保不够两年怎么办18年 电话号码给人设置成骚扰电话怎么办 找不到领导电话不接短信不回怎么办 微信账号被别人手机号冻结了怎么办 微信冻结了手机号也让人换了怎么办 顺丰快递拒收退回丢件了怎么办 京东买东西快递电话没有听到怎么办 在京东购物自己电话号输错了怎么办 北京房子卖了户口没地方迁怎么办 微信弄丢了微信密码找不到了怎么办 微信背人用过找不到密码怎么办 超市的微信支付宝收付款怎么办 办理联华超市的会员储蓄卡怎么办 卡杰文具密码本如果忘记密码怎么办 火狐浏览器阻止要访问的网页怎么办 点我达被永久停用了怎么办 刚下的软件点开系统显示停用怎么办 红酒洋酒啤酒一起喝胃不舒服怎么办 儿子13岁初一不想读书了怎么办