资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
(完整版)数据结构实验报告全集 数据结构实验报告全集 实验一线性表基本操作和简单程序 1 实验目的 (1 )掌握使用Visual C+ 6.0 上机调试程序的基本方法; (2 )掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2 实验要求 (1 )认真阅读和掌握和本实验相关的教材内容。 (2 )认真阅读和掌握本章相关内容的程序。 (3 )上机运行程序。 (4 )保存和打印出程序的运行结果,并结合程序进行分析。 (5 )按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h/ 头文件 #include/ 库头文件- 动态分配内存空间 typedef int elemtype;/ 定义数据域的类型 typedef struct linknode/ 定义结点类型 elemtype data;/ 定义数据域 struct linknode *next;/ 定义结点指针 nodetype; 2)创建单链表 nodetype *create()/ 建立单链表,由用户输入各结点data 域之值, / 以0 表示输入结束 elemtype d;/ 定义数据元素d nodetype *h=NULL,*s,*t;/ 定义结点指针 int i=1; cout d; if(d=0) break;/ 以0 表示输入结束 if(i=1)/ 建立第一个结点 h=(nodetype*)malloc(sizeof(nodetype);/ 表示指针h h-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; coutnext;i+; return i; 5) 寻找第i 个节点 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);/ 创建节点s s-data=x;s-next=NULL; if(i=0)/i=0:s 作为该单链表的第一个节点 s-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); else p=find(h,i-1);/ 查找第i-1 个节点,并由 p 指向该节点if(p!=NULL&p-next!=NULL) s=p-next;/s 指向要删除的节点 p-next=s-next; free(s); else coutnext; if(pb=NULL)/ 只有一个节点的情况 free(pa); else while (pb!=NULL)/ 有两个及以上节点的情况 free(pa);pa=pb;pb=pb-next; free(pa); 9) 主程序模块: #includeslink.h/ 包含头文件slink void main() head=create();/ 创建一个单链表 disp(head);/ 输出单链表
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号