#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode        //定义单链表结点类型
{ElemType data;struct LNode *next;     //指向后继结点
} LinkList;
void DestroyList(LinkList *&L)  //销毁单链表,之所以把这个销毁链表的函数放在第一个是为了要注重使用一下如何这个使用函数
{LinkList *p=L,*q=p->next;//每次q指向p的下一个节点,free(p),直到q为NULL的时候,当循环体执行完的时候还剩下最后一个p节点没有freewhile (q!=NULL){free(p);p=q;q=p->next;}free(p);//此时销毁最后一个节点p
/*  LinkList *p=L,*q=L->next;//自己改动了一行代码,功能一样while(q){free(p);p=q;q=q->next;}free(p);    //此时q为NULL,p指向尾结点,释放它
*/
}
void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表
{LinkList *s;int i;L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点L->next=NULL;for (i=0; i<n; i++){s=(LinkList *)malloc(sizeof(LinkList));//创建新结点s->data=a[i];s->next=L->next;            //将*s插在原开始结点之前,头结点之后L->next=s;}
}
void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表
{LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点L->next=NULL;r=L;                    //r始终指向终端结点,开始时指向头结点for (i=0; i<n; i++){s=(LinkList *)malloc(sizeof(LinkList));//创建新结点s->data=a[i];r->next=s;          //将*s插入*r之后r=s;}r->next=NULL;           //终端结点next域置为NULL(没看贺老的博客之前自己经常忽略的一行)
}
void DispList(LinkList *L)  //输出单链表
{LinkList *p=L->next;while (p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");
}
int main()
{LinkList *L1, *L2;ElemType a[8]= {7, 9, 8, 2, 0, 4, 6, 3};CreateListF(L1, a, 8);printf("头插法建表结果:");DispList(L1);CreateListR(L2, a, 8);printf("尾插法建表结果:");DispList(L2);DestroyList(L1);DestroyList(L2);return 0;
}

第4周实践项目1 建立单链表(非多组织结构)相关推荐

  1. 数据结构上机实践第四周项目1 - 建立单链表

    [项目1 - 建立单链表] 本次项目的目标是定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果. 测试主函数及函数声明源代码如下: //*Copyright (c)2017,烟台大 ...

  2. 第四周项目1建立单链表

    问题及描述: /* *Copyright(c++)2015,烟台大学计算机学院 *All rights reserved, *文件名称:test.cpp *作    者:程梦莹 *完成日期:2015年 ...

  3. 数据结构上机实践第四周项目2 - 建设“单链表”算法库

    项目2 - 建设"单链表"算法库 本次实践的目的以多文件组织的形式建设"单链表算法库",以便在后续的工程中使用. 文中的多文件组织方式不再细说,可以点击此处参照 ...

  4. 第四周项目2--建立”单链表“算法库

    /*烟台大学计算机与控制工程学院 作 者:孙潇 完成日期:2015年10月5号 问题描述:按照"0207将算法变程序"部分建议的方法,建设自己的专业基础设施算法库. 这一周,建的是 ...

  5. 建立单链表(尾插法)

    建立单链表有两种方法, 这里采用头插法. 尾插法含义: 该方法是从一个空表开始,读取数组的元素,生成新节点,将读取的数据放到存放在新节点的数据域中,然后将该节点插入到链表的表头上,直到结束为止. 由于 ...

  6. 建立单链表(头插法)

    建立单链表有两种方法, 这里采用头插法. 头插法含义: 该方法是从一个空表开始,读取数组的元素,生成新节点,将读取的数据放到存放在新节点的数据域中,然后将该节点插入到链表的表头上,直到结束为止. 注意 ...

  7. 建立单链表 单链表的插入_单链列表插入

    建立单链表 单链表的插入 All possible cases: 所有可能的情况: Inserting at beginning 开始插入 Inserting at the ending 在末尾插入 ...

  8. C++头插法尾插法建立单链表,合并两个有序单链表

    A和B是两个单链表(带表头结点),其中元素递增有序.设计一个算法,将A和B归 并成一个按元素值非递减有序的链表 C,C由A 和B 中的结点组成. #include<iostream> #i ...

  9. 第四周项目1---建立单链表

    /*烟台大学计算机与控制工程学院 作 者:孙潇 完成日期:2015年10月5号 问题描述:定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果. 输入描述:若干数据 . 程序输出:输 ...

最新文章

  1. iOS设备屏幕像素总览
  2. JUnit4用法详解
  3. varchar2改为clob带来的问题
  4. jsp简单练习-简单的下拉表单
  5. Python 动态载入模块
  6. 使用multiprocessing时的DictProxy object, typeid 'dict' at ; '__str__()' failed
  7. DataStream API及源算子
  8. 运用Vue Router的进程守护修改单页的title
  9. 关于男生追女生的数学模型【转王博】
  10. 2018年度最佳网页设计与开发教程
  11. php网页qq客服代码,qq客服代码,网页QQ在线客服代码
  12. kali自定义分辨率
  13. Python基础学习资料视频下载链接
  14. 计算机格式按键在哪儿,键盘开关按键在哪里
  15. 左偏树(XJT Love Trees,玲珑杯 Round#8 C lonlife 1081)
  16. Google Guava的5个鲜为人知的特性
  17. 滴水逆向——指针07课堂随笔
  18. Nature封面论文撤稿闹大了,认定首个室温超导体数据存疑!领域大佬尝试复现6次全失败,9位作者集体抗议无效...
  19. 一个表中的字段值用作另一个表的In查询条件
  20. 劳务派遣信息管理系统软件是什么,教你了解劳务派遣管理系统!

热门文章

  1. Android获取手机短信
  2. 系统架构师学习笔记_第三章_连载
  3. Android查看挂载的分区(如oem)
  4. db browser连接mysql_MyEclipse DB Browser 连接 MySQL 配置 mysql select
  5. 强迫症慎入:一大票让人看哭的音量键设计即将袭来
  6. 复制虚拟机网卡eth0变eth1
  7. Linux jdk配置
  8. word2010多级列表编号变成黑块的解决方案
  9. 在Exchange 2013 OWA登录页面中修改密码
  10. request.getcontextPath() 详解