2023年数据结构实验报告.docx
2023年数据结构实验报告 第一篇:数据结构试验报告 河南省高等教化自学考试 实 验 报 告 册 计算机及应用专业本科段 数据结构 姓名周东伟准考证号010512202308所属地市郑州试验地点河南职业技术学院试验日期2023-3-18试验总成果指导老师签名试验单位试验室看法:主考院校审核看法: 河南科技高校自学考试办公室 其次篇:数据结构试验报告 留意:试验结束后提交一份试验报告电子文档 电子文档命名为“学号+姓名,如:E01214058宋思怡 数据结构试验报告 一学号:姓名:专业年级: 试验名称:线性表 试验日期:2023年4月14日 试验目的: 1、熟识线性表的定义及其依次和链式存储结构; 2、娴熟驾驭线性表在依次存储结构上实现基本操作的方法; 3、娴熟驾驭在各种链表结构中实现线性表基本操作的方法; 4、驾驭用 C/C+语言调试程序的基本方法。 试验内容: 一、编写程序实现依次表的各种基本运算,并在此基础上设计一个主程序完成如下功能: 1初始化依次表L; 2依次在L尾部插入元素-1,21,13,24,8; 3输出依次表L; 4输出依次表L长度; 5推断依次表L是否为空; 6输出依次表L的第3个元素; 7输出元素24的位置; 8在L的第4个元素前插入元素0; 9输出依次表L; 10删除L的第5个元素; 11输出依次表L。 源代码 调试分析给出运行结果界面 二、编写程序实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能: 小结或探讨: 1试验中遇到的问题和解决方法 2试验中没有解决的问题 3体会和提高 第三篇:数据结构试验报告 南京信息工程高校试验实习报告 试验实习名称数据结构试验实习日期 2023-11-2得分指导老师周素萍 系公共管理系专业信息管理与信息系统年级10级班次1姓名常玲学号2023230700 3试验一依次表的基本操作及C语言实现 1、依次表的基本操作及 C 语言实现 1、用 C 语言建立自己的线性表结构的程序库,实现依次表的基本操作。 2、对线性表表示的集合,集合数据由用户从键盘输入数据类型为整型,建立相应的依次表,且使得数据按从小到大的依次存放,将两个集合的并的结果存储在一个新的线性表集合中,并输出。 1、根据教材定义的依次表机构,用 C 语言实现依次表结构的创建、插入、删除、查找等操作; 2、利用上述依次表操作实现如下程序:建立两个依次表表示的集合集合中无重 复的元素,并求这样的两个集合的并。 一 Status InsertOrderList(SqList &va,ElemType x) 二 Status DeleteK(SqList &a,int i,int k) /在非递减的依次表va中插入元素x并使其仍成为依次表的算法 int i;if(va.length=va.listsize)return(OVERFLOW);for(i=va.length;i>0,xnext;pb=pb->next;A->next=NULL;C=A;while(pa&&pb) while(pa) qa=pa;pa=pa->next;qa->next=A->next;A->next=qa;if(pa->data data) else qb=pb;pb=pb->next;qb->next=A->next;/将当前最小结点插入A表表头 A->next=qb;qa=pa;pa=pa->next;qa->next=A->next;/将当前最小结点插入A表表头 A->next=qa; pb=B;free(pb);return OK;qb=pb;pb=pb->next;qb->next=A->next;A->next=qb; 依次表就是把线性表的元素存储在数组中,元素之间的关系干脆通过相邻元素的位置来表达。 优点:简洁,数据元素的提取速度快; 缺点:1静态存储,无法预知问题规模的大小,可能空间缺乏,或奢侈存储空间;2插入元素和删除元素时间困难度高On 求两个集合的并集 该算法是求两个集合s1和s2的并集,并将结果存入s引用参数所表示的集合中带回。首先把s1集合复制到s中,然后把s2中的每个元素依次插入到集合s中,当然重复的元素不应当被插入,最终在s中就得到了s1和s2的并集,也就是在s所对应的实际参数集合中得到并集。 第四篇:数据结构试验报告 试验报告4 排序 一、试验目的 1、驾驭常用的排序方法,并驾驭用高级语言实现排序算法的方法。 2、深刻理解排序的定义和各种排序方法的特点,并能加以灵敏应用。 3、了解各种方法的排序过程及其根据的原则,并驾驭各种排序方法的时间困难度的分析方法。 二、试验要求及内容 要求编写的程序所能实现的功能包括: 1、从键盘输入要排序的一组元素的总个数 2、从键盘依次输入要排序的元素值 3、对输入的元素进行快速排序 4、对输入的元素进行折半插入排序 三、试验代码及相关注释 #include using namespace std;#include “malloc.h typedef struct int key;RedType; typedef struct RedType r;int length;SqList; /1 快速排序的结构体 typedef struct int data; int last;Sequenlist;/2 折半插入排序的结构体 int Partition(SqList &L, int low, int high) /1 找寻基准 L.r=L.r;/子表的第一个记录作基准对象 int pivotkey = L.r.key;/基准对象关键字 while(lowlast=0; cout>i; cout0) for(L->last=1;L->lastlast+) cin>>L->data; L->last-; return(L); middlesort(Sequenlist *L) /2 折半插入排序 int i,j,low,high,mid;for(i=1;ilast;i+) L->data=L->data; low=1; high=i-1; while(lowdatadata) high=mid-1;/插入点在前半区 else low=mid+1;/插入点在后半区 for(j=i;j>high+1;j-) L->data=L->data; /后移 L->data=L->data;/插入 return 0; int main() gg: coutm;coutn;cout>L.r.key; coutnext = NULL; cout > n; for(i = 0;i> p->data.num; cout > p->data.name; cout > p->data.phone; cout > p->data.phone; cout > p->data.mail; cout next = L->next; L->next = p; void InitList(LinkList &L)/初始化线性表 L =(LinkList)malloc(sizeof(LNode); L->next = NULL; void DestroyList(LinkList &L)/销毁线性表 LinkList p, q; p = L; q = p->next; while(q!= NULL) free(p); int ListEmpty(LinkList &L)/推断线性表是否为空 if(L->next = NULL) return TRUE; else return FALSE; int ListLength(LinkList &L)/求链表的长度 LinkList p = L; int c = 0; while(p->next!= NULL) c+; p = p->next; return(c); void GetElem(LinkList &L)/取链表第i个数据元素 LinkList p = L->next; string s; cout > s; while(p!= NULL)/根据相关信息,查找员工。 if(p->data.num = s | p->data.name = s | p->data.phone = s | p->data.call = s | p->data.mail = s) break; p = p->next; if(!p) cout next; char j; string s; int i; cout > s; while(p!= NULL)/根据相关信息,查找员工。 if(p->data.num = s | p->data.name = s | p->data.phone = s | p->data.call = s | p->data.mail = s) break; p = p->next; if(!p) cout > i; cout > j; switch(i) case 1:strcpy(p->data.num, j);break; case 2:strcpy(p->data.name, j);break; case 3:strcpy(p->data.phone, j);break; case 4:strcpy(p->data.call, j);break; case 5:strcpy(p->data.mail, j);break; default: cout > i; while(p->next && j next; p->next = q->next;/删除并释放结点 free(q); void ListInsert(LinkList &L) LinkList s, p = L; s =(LinkList)malloc(sizeof(LNode); cout > s->data.num; cout > s->data.name; cout > s->data.phone; cout > s->data.phone; cout > s->data.mail; cout next = p->next; p->next = s; void PrintList(LinkList &L)/打印线性表 LinkList p = L->next; int i = 1; if(p = NULL) cout > i; while(p->next && j next; p->next = q->next;/删除并释放结点 free(q); void ListInsert(LinkList &L) LinkList s, p = L; s =(LinkList)malloc(sizeof(LNode); cout > s->data.num; cout > s->data.name; cout > s->data.phone; cout > s->data.phone; cout > s->data.mail; cout next = p->next; p->next = s; void PrintList(LinkList &L)/打印线性表 LinkList p = L->next; int i = 1; if(p = NULL) cout <<“通讯录为空!<< endl; while(p!= NULL) cout <<“第 <<i<<“ 个员工信息<< endl; cout <<“ 员工编号:<data.num << endl; cout <<“ 员工姓名:<data.name << endl; cout <<“办公室电话号码:<data.phone << endl; cout <<“ 手机号码:<data.phone << endl; cout <<“ 员工邮箱:<data.mail << endl; cout <<“=<< endl;break; case 4: /添加 ListInsert(L); cout <<“添加信息胜利!; system(“pause); break; case 5: PrintList(L); ListDelete(L); cout <<“删除信息胜利!; system(“pause); break;/输出全部信息 case 6: PrintList(L); system(“pause); break; case 7: cout <<“该通讯录共有 << ListLength(L)<<“ 员工信息!<< endl; system(“pause); break; default: cout <<“输入错误!<< endl; system(“pause); while(in!= 0); 5.试验截图.