- 13
- 0
- 约6.75千字
- 约 13页
- 2017-11-10 发布于江苏
- 举报
《数据结构》上机实验报告链表
西华数学与计算机学院上机实践报告
课程:级::名称: 上机实践日期:2012-11-6
上机实践编号:
一、目的1. 了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。
2. 重点是线性表的基本操作在两种存储结构上的实现;其中以链表的操作为侧重点;并进一步学习程序设计方法。
掌握栈这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。
掌握队列这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。
了解和掌握递归程序设计的基本原理和方法。
6. 掌握使用 C++面向对象的程序设计技术设计数据结构源程序的方法。
二、 1. 熟悉前面【程序示例】,按照约瑟夫问题的方法2,试着不设头结点改写原来的程序,上机调试运行。
2. 用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码。
要求:(1)通讯录按姓名项的字母顺序排列;
(2)能查找通讯录中某人的信息;
[提示] 用链表来存放这个通讯录,一个人的信息作为一个结点。成链的过程可以这样考虑:先把头结点后面的第一个数据元素结点作为链中的首结点,也是末结点。从第二个数据开始逐一作为工作结点,需从链表的首结点开始比较,如果工作结点的数据元素的姓名字符串比链中的当前结点的数据元素的姓名字符串小,就插在其前面。否则,再看后面是否还有结点,若没有结点了就插在其后面成为末结点;若后面还有结点,再与后面的结点逐一比较处理。
写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过。在此基础上修改程序,实现十进制数据M 向N 进制(2或8或16)的转换。【程序示例】
三、环境
四#include iostream.h
struct NodeType // 结点的结构定义
{ int num; // 编号子域
int psw; //密码域
char name[20]; // 姓名子域
NodeType *next; // 指针域
};
class Jose //类声明
{ private: NodeType *Head;
public:
Jose( ){};
~Jose(){ };
void creat();
void outs();
};
void Jose::creat()
{ int i=0, n;
NodeType *newp, *pre;
cout\n 输入总人数 n=; cinn;
pre=new NodeType;
Head=new NodeType;
pre-num=1;
cout\n 编号1的人 姓名=;
cinpre-name;
cout\n 密码1的人 密码=;
cinpre-psw;
Head=pre;
Head-next=Head;
for(i=1;in;i++)
{ newp=new NodeType;
newp-num=i+1;
cout\n 编号i+1的人 姓名=; cinnewp-name;
cout\n 密码i+1的人 密码=;
cinnewp-psw;
newp-next=Head;
pre-next=newp;
pre=newp;
}
}
void Jose::outs( )
{ int m,i; NodeType *q=Head, *p;
cout\n 输入m值(m=2); cinm;
cout\n 根据m值,开始报数输出:endl;
while(q-next!=q)
{ for(i=1;im;i++){ p=q; q=q-next;}
cou
原创力文档

文档评论(0)