《数据结构实验报告-线性链表(共5页).doc》由会员分享,可在线阅读,更多相关《数据结构实验报告-线性链表(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上课程名称数据结构 实验名称线性链表的实现和应用 实验日期2015.1.16班 级 姓 名 学号 仪器编号实验报告要求 1.实验目的 2.实验要求 3.实验步骤 4.程序清单 5.运行情况 6.流程图 7.实验体会 实验目的:掌握线性表的链式存储结构设计与基本操作的实现。实验内容:1、采用书上第28页定义的线性表链式存储结构,编程实现书中算法2.8、算法2.9、算法2.10、算法2.11,以及输出线性链表的算法。另外,编写主函数对所实现的算法进行测试。2、采用线性表的链式存储结构,实现线性链表的合并操作:设有线性链表La和Lb,试设计算法将La和Lb归并为新的线性链表L
2、c;设线性链表La和Lb中的数据元素为整数,且均已按值非递减有序排列,要求Lc中的数据元素也按值非递减有序排列。程序清单:1.#include#include#define ERROR 0#define NULL 0#define OK 1typedef int ElemType;typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;int GetElem_L(LinkList L,int i, ElemType &e)int j=1;LinkList p=L-next;while(p&jnext;+j;if(
3、!p|ji)return ERROR;e=p-data;return OK;int ListInsert_L(LinkList &L,int i,ElemType e)int j=0;LinkList p=L,s;while(p&jnext;+j;if(!p|ji-1)return ERROR;s=(LinkList)malloc(sizeof(LNode);s-data=e;s-next=p-next;p-next=s;return OK;int ListDelete_L(LinkList &L,int i,ElemType &e)int j=0;LinkList p=L,q;while(p
4、-next&jnext;+j;if(!(p-next)&ji-1)return ERROR;q=p-next;p-next=q-next;e=q-data;free(q);return OK;void CreateList_L(LinkList &L,int n)int i;LinkList p,q;L=(LinkList)malloc(sizeof(LNode);q=L;for(i=1;idata);q-next=p;q=p;q-next=NULL;int OutputList_L(LinkList L)LinkList p=L-next;if(p=NULL)return ERROR;whi
5、le(p!=NULL)printf(%d,p-data);p=p-next;printf(n);return OK;void main()ElemType i,e,a,n,x,y,dd;LinkList L; printf(输入元素个数n:n);scanf(%d,&n);printf(请输入链表中的%d个元素:n,n);CreateList_L(L,n); printf(输出顺序表所有元素:n);OutputList_L(L);printf(请输入赋值的第i个元素:);scanf(%d,&i);GetElem_L(L,i,e);printf(e=%dn,e);printf(插入元素的位置:);
6、scanf(%d,&x);printf(插入的元素为: );scanf(%d,&a);printf(在顺序表第%d个位置插入%dn,x,a);ListInsert_L(L,x,a);printf(输出插入操作后顺序表所有元素:n);OutputList_L(L); printf(删除元素的位置:);scanf(%d,&y);printf(删除顺序表第%d个位置的元素n,y);ListDelete_L(L,y,dd);printf(输出删除操作后顺序表所有元素:n);OutputList_L(L);2.#include#include#define ERROR 0#define NULL 0#d
7、efine OK 1typedef int ElemType;typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;void CreateList_L(LinkList &L,int n)int i;LinkList p,q;L=(LinkList)malloc(sizeof(LNode);q=L;for(i=1;idata);q-next=p;q=p;q-next=NULL;int OutputList_L(LinkList L)LinkList p=L-next;if(p=NULL)return ERROR
8、;while(p!=NULL)printf(%d,p-data);p=p-next;printf(n);return OK;void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)LinkList pa,pb,pc;pa=La-next;pb=Lb-next;Lc=pc=La;while(pa&pb)if(pa-datadata)pc-next=pa;pc=pa;pa=pa-next;elsepc-next=pb;pc=pb;pb=pb-next;pc-next=pa?pa:pb;free(Lb);void main()int a,b;L
9、inkList La,Lb,Lc=0;printf(输入La元素个数a:n);scanf(%d,&a);printf(请输入链表La中的元素:n);CreateList_L(La,a);printf(输入Lb元素个数b:n);scanf(%d,&b);printf(请输入链表Lb中的元素:n);CreateList_L(Lb,b); printf(输出链表La所有元素:n);OutputList_L(La); printf(输出链表Lb所有元素:n);OutputList_L(Lb);MergeList_L(La,Lb,Lc); printf(输出链表Lc所有元素:n);OutputList_L(Lc);教师评价优良中及格不及格教师签名日期江南大学物联网工程学院实验报告专心-专注-专业