实验报告: 线性表的基本操作及应用

实验内容

基本要求:
(1)实现单链表的创建;(2)实现单链表的插入;(3)实现单链表的删除
(4)实现单链表的查找;(5)实现单链表的显示;

/*Name:Linklist operation.cpp Author:XDate:2020/3/13 Description: 线性表的基本操作及应用
*/
#include<stdio.h>
#include<stdlib.h>   //分配数据
#define ERROR 0;
#define OK 1;typedef int ElemType;
typedef int status;typedef struct LNode
{ElemType data;struct LNode *next;
}LNode,*LinkList;//建立线性表LA   ,头插法
status CreatList_LA(LinkList &LA,int n)
{LNode *p;int i;LA=(LinkList)malloc(sizeof(LNode));LA->next=NULL;for(i=n;i>0;--i){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);p->next=LA->next;LA->next=p;}return OK;
}//建立线性表LB
status CreakList_LB(LinkList &LB,int n)
{LNode *p;status i;LB=(LinkList)malloc(sizeof(LNode));LB->next=NULL;for(i=n;i>0;--i){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);p->next=LB->next;LB->next=p;}return OK;
}//在第i个结点前插入e
status ListInsert_LA(LinkList &LA,status i,ElemType e)
{LNode *p,*s;   //等同于 LinkList p,s;status j;p=LA;j=0;while(p&&j<i-1){p=p->next;++j;   //计数器 }if(!p||j>i-1)return ERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;return OK;
}//删除第i个结点,值代入e
status ListDelete_LA(LinkList &LA,int i,ElemType &e)
{LNode *p,*q;status j;p=LA;j=0;while(p||j<i-1){p=p->next;++j;}if(p->next==NULL||j>i-1)return  ERROR;q=p->next;p->next=q->next;e=q->data;                              free(q);return OK;
} //查找到第i个元素,用e返回
status GetElem_LA(LinkList LA,int i,ElemType e)
{   LNode *p;p=LA;status j;j=0;while(p&&j<i-1){p=p->next;++j;}if(!p||j>i)return ERROR;e=p->data;return OK;} //合并线性表LA和LB
status MergeList_L(LinkList &LA,LinkList &LB,LinkList &LC)
{LNode *pa,*pb,*pc;pa=LA->next;pb=LB->next;LC=pc=LA;while(pa&&pb){if(pa->data<=pb->data) {pc->next=pa;pc=pa;pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}pc->next=pa?pa:pb;} free(LB);}//输出链表
status printfList_L(LinkList &L)
{LNode *p;int i;p=L->next;while(p){printf("%d ",p->data);p=p->next;}
}int main()
{ElemType e ;LinkList LA,LB,LC;status i,n;printf("输入向所创建LA链表中插入几个结点,n为:");scanf("%d",&n); printf("输入链表的结点数据:");CreatList_LA(LA,n) ;printf("输入向所创建LB链表中插入几个结点,n为:");scanf("%d",&n); printf("输入链表的结点数据:");CreakList_LB(LB,n); printf("输出链表LA为:");printfList_L(LA);printf("\n输出链表LB为:");printfList_L(LB);printf("\n输入在链表第几个位置插入结点,i,e为:");scanf("%d%d",&i,&e);ListInsert_LA(LA,i,e);printf("\n插入后使出的链表为:");printfList_L(LA);printf("\n输入在链表第几个位置删除结点,i为:"); scanf("%d",&i);ListDelete_LA(LA,i,e);printf("\n删除后的链表LA为:");printfList_L(LA);printf("删除的第%d个结点所储存的元素为:%f",i,e);printf("\n输入想查找第几个元素结点,i为:");scanf("%d",&i);GetElem_LA(LA,i,e);printf("\n查找到的第i个元素为:");printf("%d",e);printf("\n合并之后的链表为:");MergeList_L(LA,LB,LC);printfList_L(LC);return OK;
}

【记得引用符&与变量名称间有空格】
【定义的函数数据类型要与其中数据的数据类型一值】

实验报告: 线性表的基本操作及应用相关推荐

  1. 实验一线性表的基本操作实现及其应用(JavaScript实现)

    实验一线性表的基本操作实现及其应用(JavaScript实现) 实验目的 熟练掌握线性表的结构特点, 掌握顺序表的基本操作. 巩固 C++相关的程序设计方法与技术. 学会使用顺序表解决实际问题. 实验 ...

  2. 数据结构实验报告线性表的应用

    线性表的应用 实验要求 创建一个班级学生信息表,包含"学号.姓名.性别.成绩"等信息.具有如下功能:(1) 根据指定学生个数,逐个输入学生信息:(2) 逐个显示学生表中所有学生的相 ...

  3. C++数据结构实验---线性表的基本操作

    实验一 线性表的基本操作 1.实验内容与要求 理解线性表的概念 设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造.查找.插入.删除.输出等基本操作. 掌握两种存储结构的优缺点以及 ...

  4. 实验报告微型计算机拆卸顺序表,实验一线性表的顺序存储结构实验报告页.doc...

    实验一线性表的顺序存储结构实验报告页.doc 1 攀 枝 花 学 院 实 验 报 告 实验课程 数据结构 实验项目线性表的顺序存储 实验日期 系 班级 姓名 学号 同组人 指导老师 成绩 实验目的1. ...

  5. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  6. 数据结构(C语言版)实验一 线性表

    C语言数据结构实验一 **实验要求:实验目的: 1.掌握线性表的定义: 2.掌握线性表的基本操作,如建立.查找.插入和删除等. 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的顺序表和链表,使 ...

  7. 实验一 线性表、堆栈和队列的操作与实现

    前言 记录实验,同时也是记录常见数据结构算法的实现. 广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418A) 学院 计算机科学与网络工程学院 实验课程 数据结构实验 实验项目 实验一 ...

  8. 本科课程【数据结构与算法】实验1——线性表的顺序表示及插入、删除操作(C++实现)

    大家好,我是[1+1=王], 热爱java的计算机(人工智能)渣硕研究生在读. 如果你也对java.人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never ...

  9. 数据结构实验--基于线性表的图书信息管理系统

    本文是依据数据结构习题解析与实验指导(李冬梅)一书中的第一个实验–基于线性表的图书信息管理系统所写的. 之所以写这个,是因为这个实验不仅涉及到线性表的结构设计,还包括一些线性表的基本操作,个人认为,做 ...

最新文章

  1. 重磅直播|光学3D测量技术原理及应用
  2. 动车废票二维码将泄露个人信息 暂无防止破解法
  3. c#如何用一个程序打开另一个程序(如:窗体的注销重启)
  4. 怎么访问和java包同级的文件_JAVA程序员谈几种访问文件的方式
  5. Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
  6. 将MSRA-TD500标签转换成逆时针输出标签+labeleme json格式转四个点的txt
  7. 分组函数group by和Oracle中分析函数partition by的用法以及区别
  8. 7-Mybatis 连接池与事务深入
  9. 基于JAVA+SpringMVC+MYSQL的企业员工管理系统
  10. mysql基础操作(二)
  11. OptionRoom将在Bounce授权拍卖平台进行Polkadot IDO
  12. flask manage port_nginx+uwsgi+python+flask环境搭建
  13. word自动生成目录的最后一个大标题页码前没有点点点连接线解决方案
  14. [C++][题解]切蛋糕
  15. 如何通俗解释Docker是什么?
  16. web仿微信发朋友圈选择位置
  17. 软件缺陷报告模板(微信缺陷报告案例)
  18. set off 和 set out 的区别
  19. 深入理解JVM的PC寄存器(Program Counter Register)
  20. 家庭机器人要爆发?看客拍手叫好,戏子才知冷暖

热门文章

  1. Windows下安装ab
  2. springboot pom 依赖
  3. Vue3 --- 安装和使用echarts
  4. 在下拉菜单中,传递的value参数为 id时,如何拿到其 label值?
  5. java spring注解维护,从一次工程启动失败谈谈 spring 注解
  6. 赋能网安生态通信服务器操作系统,紫光展锐打造操作系统生态,赋能万物互联智能时代...
  7. Qt中Tcp通信的简单使用二
  8. c语言中词法分析怎么识别注释,C语言中的词法分析-如何在检测多行注释时使星号被读取并输出?...
  9. java 静态块初始化_简单了解java中静态初始化块的执行顺序
  10. qc成果报告范例_质量引领创新 扬子江勇夺医药行业QC“十五连冠”