1、西 安 邮 电 大 学(计算机学院)数据结构课内实验报告实验名称: 线性表的应用专业名称: 电子商务班 级: 学生姓名: 学号(8 位): 指导教师: 实验日期: 2014 年 10 月 15 日一. 实验目的及实验环境1. 实验目的熟悉并掌握线性表如何构建,并学会线性表的基本应用和两种存储结构的实现2. 实验环境VC+6.0二. 实验内容约瑟夫问题:编号为 1、2、3.,按顺时针坐在一张圆桌周围,每人持有一个密码,一个人选任意正整数为报数上限 m,从第一个人开始报数报到m 时停止报数,这个人出列,直到所有的人都出列,游戏结束。用线性表的内容来实现这个程序。三方案设计第一步:建立 n 个节点的
2、无头循环链表。第二步:从链表的第一个节点开始计数,直到寻找到第 m 个节点第三步:输出该节点的 id 值,并将其 password 值,作为新的 m 值第四步:根据新的 m 值,继续删除节点,直到循环链表为空,程序结束四测试数据及运行结果1正常测试数据(3 组)及运行结果;第一组:测试数据:9、5、2、3、4、1运行结果截图为:第二组:测试数据:5、2、6、1、2、3、4运行结果截图:第三组:测试数据:3、2、1、6、9运行结果截图:2非正常测试数据(2 组)及运行结果。第一组:测试数据:1、0、2、0运行结果截图为:第二组:测试数据:0、0、0、0、0运行结果截图为:五总结六附录:源代码(电
3、子版)#include#includetypedef struct nodeint id;int password;struct node *next;lnode,*list;list creat2()lnode *head,*p,*q;int m,n=2;head=(lnode *)malloc(sizeof(lnode);head-next=NULL;q=head;printf(“please input the initial password:“);scanf(“%d“,head-password=m;head-id=1;printf(“please input(password):“
4、);scanf(“%d“,while(m!=-1)p=(list)malloc(sizeof(lnode);p-password=m;p-id=n;q-next=p;q=p;printf(“please input(password):“);scanf(“%d“,n+;p-next=head;return head;void print(lnode *q)lnode *p;printf(“%4d,%4dn“,q-id,q-password);p=q-next;while(p!=q)printf(“%4d,%4dn“,p-id,p-password);p=p-next;printf(“n“);l
5、ist front(list q)list p;p=q-next;while(p-next!=q)p=p-next;return p;void deletee(list q)list p,r;int i,m=q-password;p=q;while(p-next!=p)i=1;while(i!=m)p=p-next;i+;printf(“%4d,%4dn“,p-id,p-password);p=front(p);r=p-next;p-next=r-next;m=r-password;free(r);p=p-next;printf(“%4d,%4dn“,p-id,p-password);void
6、 main()list head;head=creat2();printf(“=打印队列原有情况=n“);print(head);printf(“=打印出队情况=n“);deletee(head);西 安 邮 电 大 学(计算机学院)数据结构课内实验报告实验名称: 栈和队列的应用专业名称: 电子商务班 级: 学生姓名: 学号(8 位): 指导教师: 衡 霞实验日期: 2014 年 11 月 10 日一. 实验目的及实验环境1、实验目的掌握栈和队列的基本操作,实现栈或队列的基本应用2、实验环境VC+6.0二. 实验内容判断输入的一个字符串是否为回文三方案设计第一步:建立一个顺序栈第二步:输入字符串的时候入栈第三步:出栈时也保存到一个数组中第四步:比较两个数组是否完全相同四测试数据及运行结果1正常测试数据(3 组)及运行结果;第一组:测试数据:1、2、3运行结果:第二组:测试数据:a、b、c运行结果:第三组:测试数据:1、2、a、2、1运行结果:2非正常测试数据(2 组)及运行结果。第一组:测试数据:00、a、b、ba 、00运行结果: