收藏 分享(赏)

数据结构实验报告全集.doc

上传人:精品资料 文档编号:10166610 上传时间:2019-10-15 格式:DOC 页数:33 大小:332KB
下载 相关 举报
数据结构实验报告全集.doc_第1页
第1页 / 共33页
数据结构实验报告全集.doc_第2页
第2页 / 共33页
数据结构实验报告全集.doc_第3页
第3页 / 共33页
数据结构实验报告全集.doc_第4页
第4页 / 共33页
数据结构实验报告全集.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、数据结构实验报告全集实验一 线性表基本操作和简单程序1 实验目的(1)掌握使用 Visual C+ 6.0 上机调试程序的基本方法;(2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。2 实验要求(1) 认真阅读和掌握和本实验相关的教材内容。(2) 认真阅读和掌握本章相关内容的程序。(3) 上机运行程序。(4) 保存和打印出程序的运行结果,并结合程序进行分析。(5) 按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果实验代码:1)头文件模块#include iostream.h/头文件#include/库头文件-动

2、态分配内存空间typedef int elemtype;/定义数据域的类型typedef struct linknode/定义结点类型elemtype data;/定义数据域struct linknode *next;/定义结点指针nodetype;2)创建单链表nodetype *create()/建立单链表,由用户输入各结点 data 域之值,/以 0 表示输入结束 elemtype d;/定义数据元素 dnodetype *h=NULL,*s,*t;/定义结点指针int i=1;cout d;if(d=0) break;/以 0 表示输入结束if(i=1)/建立第一个结点h=(nodet

3、ype*)malloc(sizeof(nodetype);/表示指针 hh-data=d;h-next=NULL;t=h;/h 是头指针else/建立其余结点s=(nodetype*) malloc(sizeof(nodetype);s-data=d;s-next=NULL;t-next=s;t=s;/t 始终指向生成的单链表的最后一个节点i+;return h; 3)输出单链表中的元素void disp(nodetype*h)/输出由 h 指向的单链表的所有 data 域之值nodetype *p=h;coutdatanext;coutnext;i+;return i;5)寻找第 i 个节点

4、nodetype *find(nodetype *h,int i)/返回第 i 个节点的指针nodetype *p=h;int j=1;if(ilen(h)|inext;return p; 6)单链表的插入操作nodetype *ins(nodetype *h,int i,elemtype x)/在单链表 head 中第 i 个节点/(i=0)之后插入一个 data 域为 x 的节点nodetype *p,*s;s=(nodetype*)malloc(sizeof(nodetype);/创建节点 ss-data=x;s-next=NULL;if(i=0)/i=0:s 作为该单链表的第一个节点s

5、-next=h;h=s;else p=find(h,i);/查找第 i 个节点,并由 p 指向该节点if(p!=NULL)s-next=p-next;p-next=s;return h;7)单链表的删除操作nodetype *del(nodetype *h,int i)/删除第 i 个节点nodetype *p=h, *s;int j=1;if(i=1)/删除第 1 个节点h=h-next;free(p);elsep=find(h,i-1);/查找第 i-1 个节点,并由 p 指向该节点if(p!=NULL/s 指向要删除的节点p-next=s-next;free(s);else coutne

6、xt;if(pb=NULL)/只有一个节点的情况free(pa);else while (pb!=NULL)/有两个及以上节点的情况free(pa);pa=pb;pb=pb-next;free(pa);9)主程序模块:#include“slink.h“/包含头文件 slinkvoid main()nodetype *head;/定义节点指针变量head=create();/创建一个单链表disp(head);/输出单链表cout#define MaxSize 100typedef structint dataMaxSize;int top;SqStack;void InitStack(SqSt

7、ack *st) /初始化栈st-top=-1;int StackEmpty(SqStack *st) /判断栈为空return (st-top=-1);void Push(SqStack *st,int x) /元素进栈if(st-top=MaxSize-1)printf(“栈上溢出!n“);elsest-top+;st-datast-top=x;void Pop(SqStack *st) /退栈if(st-top=-1)printf(“栈下溢出n“);elsest-top-;int Gettop(SqStack *st) /获得栈顶元素if(st-top=-1)printf(“栈空n“);

8、return 0;elsereturn st-datast-top;void Display(SqStack *st) /打印栈里元素int i;printf(“栈中元素:“);for(i=st-top;i=0;-i)printf(“%d “,st-datai);printf(“n“);int main() /测试SqStack L;SqStack *st=InitStack(st);printf(“栈空:%dn“,StackEmpty(st);for(int i=1;i#define MaxSize 50typedef structchar dataMaxSize; /存放字符串int le

9、ngth; /字符串长度SqString;/将一个字符串常量赋给串 svoid StrAssign(SqString for(i=0;cstri!=0;i+) /这个0代表字符串结束标志,编译系统自动加上的s.datai=cstri;s.length=i;/字符串的复制void StrCopy(SqString for(i=0;is.length|js.length)printf(“子字符串复制失败n“);for(k=i-1;ks1.length+1)printf(“字符串插入失败n“);return str;for(j=0;js.length|i+js.length+1)printf(“字符

10、串删除失败n“); return str;for(k=0;ks.length|i+j-1s.length)printf(“字符串替换失败了n“);for(k=0;k0)printf(“下面输出这个字符串n“);for(i=0;itypedef struct bitnodechar data;struct bitnode *lchild,*rchild;binode,*bitree;void createbitree(bitree *T)char ch;cinch;if(ch=0)(*T)=NULL;else(*T)=new bitnode;(*T)-data=ch;createbitree(c

11、reatebitree(void inorderout(bitree T)if(T)inorderout(T-lchild);coutdatarchild);void postorder(bitree T)if(T)postorder(T-lchild);postorder(T-rchild);coutdatalchild=NULLreturn (countleaf(bt-lchild)+countleaf(bt-rchild);void main()bitree bt;createbitree(inorderout(bt);cout#include#define MAX_LENGTH 100

12、typedef int KeyType; typedef structint key;ElemType;typedef structElemType elemMAX_LENGTH; / 0 号单元空出int length;SSTable;int Search_Bin(SSTable ST,KeyType key) int low,high,mid;low = 1;high = ST.length;while(low #include#define MAXSIZE 100typedef struct int key;sortkey;typedef structsortkey elemMAXSIZ

13、E;int length;sortelem;void InsertSort(sortelem *p)int i,j;for(i=2;ilength;i+)if(p-elemi.keyelemi-1.key)/*小于时,需将 elemi插入有序表*/ p-elem0.key=p-elemi.key; /*为统一算法设置监测*/for(j=i-1;p-elem0.keyelemj.key;j-)p-elemj+1.key=p-elemj.key;/*记录后移*/p-elemj+1.key=p-elem0.key; /*插入到正确位置*/void main()sortelem *p;int i;int b6=45,23,54,6,4,46;p=(sortelem *)malloc(sizeof(sortelem);p-length=0;for(i=1;ielemi.key=bi-1;p-length+;InsertSort(p);for(i=1;ielemi.key);system(“pause“);实验结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报