- 256
- 0
- 约 9页
- 2016-09-12 发布于河南
- 举报
c实验题
实验
实验目的
学习结构的定义和使用
学习使用结构构建链表式数据结构
理解结构与指针的关系
学习类的定义、实例化的方法
学习使用构造函数和析构函数
学习类成员访问控制的运用
学习使用静态成员、内联成员函数
学习堆对象的分配、使用与释放
体会面向对象程序设计方法
实验内容
1. 用结构构建链表
设计一个单向链表。从标准输入读取若干整数,建立链表,每次读入的数放入链表结尾。当用户输入 0时,结束链表的建立工作。然后从前往后依次输出链表节点中的内容。每个节点包含两个值,一个是真正存放的整数值,另一个为指向链表中下一个节点的指针。链表中最后一个节点不指向任何节点,所以指针为空(NULL)。表头指针和表尾指针分别指向链表的头节点和尾节点。
[测试数据]
程序输出:Please input integers to build the link(0 TO END):
用户输入:3 4 5 6 7 8 9 0
程序输出:Link elements:3 4 5 6 7 8 9
[实现要求]
用链表存放输入的整数。链表节点空间动态申请。链表节点结构和链表数据类型的参考定义为:
//定义链表节点类型
typedef struct node{
int elem;
struct node *next;
} Node;
//定义链表类型
typedef Node * Link;
在链表建立结束后,输出链表节点内容的同时释放节点空间。
处理申请不到空间的情况。
[实现提示]
因为每次插入节点是在链表尾,而输出链表是从链表头,所以可以用两个指针记录链表。一个为头指针,一个为尾指针。
第一次插入节点时需要考虑链表为空的情况。
建立一个新节点的过程为: // 建立一个新的节点 Node * pNode = new Node;
if (pNode == NULL) {
cout Memory insufficient!;
break;
}
pNode-elem = k;
pNode-next = NULL;
顺序遍历链表的过程为: Node *pNode = head;
while (pNode != NULL) {
访问pNode所指节点的内容;
pNode = pNode-Next;
}
将新节点加到链表中的过程为:
if (head == NULL)
head = tail = pNode;
else {
tail-next = pNode;
tail = pNode;
}
pNode-elem = k;
pNode-next = NULL;
顺序遍历链表的过程为:
Node *pNode = head;
while (pNode != NULL) {
访问pNode所指节点的内容;
pNode = pNode-Next;
}
将新节点加到链表中的过程为:
if (head == NULL)
head = tail = pNode;
else {
tail-next = pNode;
tail = pNode;
}
[思考问题]
如果是双向链表,程序要做那些改动?
2. 队列类
设计一个队列类,模拟实际生活的队列,队列中的元素服从先进先出的规则。每次有新的元素入列时,就放在队列尾。元素出列时,从队列头出。开始时队列为空。队列的示意图为:
[实现要求]
利用上一实验设计的链表结构存放队列类中的队列元素。也即队列元素的空间是动态申请的。
在构造队列对象时,初始化该链表,在析构队列对象时,释放链表所占的空间。
队列类用单独的文件”queue.cpp”实现,队列类的定义放在一个头文件”queue.h”中,主文件名为main.cpp。
队列类中的元素为整数,并提供以下服务:
void put (int newVal); //在队尾加入一个新元素
int get ( ); //取出队头元素,并释放节点空间
int getCount(); //取队列中元素的个数
bool empty() ; //判断队列是否为空
bool是Visual C++定义的数据类型,它其实是一种整数类型。具有bool类型的变量只有两种值:true或false。一个条件表达式返回的值就是bool类型的。如表达式i!=0在i的值为0时返回false,在不为0时返回true。
要求将函数empty()和getCount()定义为内联函数,另外两个定义为非内联函数。数据成员全定义为私有成员或保护成员。
使用队列类的主程序为:
#include iostream.h
#include queue.h
int main() {
Queue q;
int i;
//输出队列是否为空
cout Queue empty:;
if (q.empty())
cout Y
您可能关注的文档
最近下载
- 施工现场各类设备机械安全监理实施细则(参考).doc VIP
- 华东交通大学2015-2016第一学期电牵专业《电机与拖动》期末A卷.doc VIP
- 储气罐专业定期检查表.docx VIP
- JB_T 14788-2024《连续延伸带式输送机》.pdf VIP
- GB 265-1988 运动黏度.pdf
- 山东省青岛市胶州市2024-2025学年七年级上学期期末历史试题(含答案).pdf VIP
- 基于概念整合理论研究母语对二语写作的影响-外国语言学及应用语言学专业论文.docx VIP
- 中国旅游地理第四章旅游区划.ppt VIP
- 《陆上风力发电机组钢混塔架施工关键材料技术规程》.pdf VIP
- 2025年AI图像识别服务合同协议合同.docx VIP
原创力文档

文档评论(0)