首页 > 编程语言 >【C++ Primer Plus习题】14.3

【C++ Primer Plus习题】14.3

时间:2024-09-10 21:51:59浏览次数:9  
标签:const temp item Plus QueueTp front return 习题 Primer

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

这里是引用

解答:
main.cpp

#include <iostream>
#include "queuetp.h"

using namespace std;

int main()
{
	QueueTp<Worker> lolas;
	Worker w1;
	lolas.queuecount();
	w1.set();
	lolas.enqueue(w1);
	Worker w2;
	lolas.dequeue(w2);
	w2.show();
	cout << "Bye.\n";
	return 0;

	return 0;
}

queuetp.h

#pragma once
#include <iostream>
#include <string>

using namespace std;

class Worker
{
private:
	string fullname;
	long id;

public:
	Worker():fullname("no one"),id(0L){}
	Worker(const string &s,long n):fullname(s),id(n){}
	~Worker() {};
	void set();
	void show()const;
};

template <class T>class QueueTp
{
private:
	enum {Q_SIZE=10};
	struct Node { T item; Node* next; };
	Node* front;
	Node* rear;
	int items;
	const int qsize;
	QueueTp(const QueueTp&q):qsize(0){}
	QueueTp& operator=(const QueueTp& q) { return *this; }
public:
	QueueTp(int qs = Q_SIZE) :qsize(qs)
	{
		front = rear = NULL;
		items = 0;
	}
	~QueueTp()
	{
		Node* temp;
		while (front)
		{
			temp = front;
			front = front->next;
			delete temp;
		}
	}
	bool isempty()const;
	bool isfull()const;
	int queuecount()const;
	bool enqueue(const T& item);
	bool dequeue(T& item);
};

template <class T>
bool QueueTp<T>::isempty()const
{
	if (items == 0)return true;
	else return false;
}
template <class T>
bool QueueTp<T>::isfull()const
{
	return items == Q_SIZE;
}
template <class T>
int QueueTp<T>::queuecount()const
{
	return items;
}
template <class T>
bool QueueTp<T>::enqueue(const T& item)
{
	if (isfull())return false;
	Node* temp = new Node;
	temp->item = item;
	temp->next = NULL;
	items++;
	if (front == NULL)
	{
		front = temp;
	}
	else
	{
		rear->next = temp;
	}
	rear = temp;
	return  true;
}
template <class T>
bool QueueTp<T>::dequeue(T& item)
{
	if (isempty())return false;
	item = front->item;
	items--;
	Node* temp = front;
	front = front->next;
	delete temp;
	if (items == 0)
	{
		rear = NULL;
	}
	return true;

}

queuetp.cpp

#include "queuetp.h"


void Worker::set()
{
	cout << "请输入工人的姓名:";
	getline(cin, fullname);
	cout << "请输入工人的id:";
	cin >> id;
	while (cin.get() != '\n')continue;
}
void Worker::show()const
{
	cout << "工人姓名:" << fullname << endl;
	cout << "工人id:" << id << endl;
}




运行结果:
在这里插入图片描述

考查点:

  • 链队列
  • 模板类

注意:

  • 模板类成员函数的实现最好在一个文件中,不要分开,不然会报调不到函数的错误.

2024年9月10日21:48:36

标签:const,temp,item,Plus,QueueTp,front,return,习题,Primer
From: https://blog.csdn.net/qq_74047911/article/details/142110035

相关文章

  • 靶机 primer
    primer虚假的打法dirbdirbhttp://192.168.1.115-X.php.txt-X指定后缀参数爆破Fuzzing/Fuzz_For_Webatmaster·hacknpentest/Fuzzing·GitHubwfuzz-c-w/usr/share/wfuzz/wordlist/general/common.txt--hc404--hw500http://website-ip/index.php?FUZZ=s......
  • C语言阶段练习题
    题目一:(25分)题目描述:输入终值,输出所有能被7整除的数值及其和数据展示: 代码展示:#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){inta,sum=0,m=0;         //定义输入值,求和值,以及判断换......
  • “PLUS模型+“生态系统服务多情景模拟预测
    生态系统服务是人类直接或间接从生态系统中获得的惠益,在应对城市挑战和实施可持续发展方面发挥着至关重要的作用。随着全球城市化的快速发展, 频繁的人类活动导致了土地利用的快速变化,导致生态系统结构和功能的变化,影响生态系统服务的供应。因此,生态系统服务评估与未来城市土......
  • mybaties-plus使用@SelectProvider实现动态SQL
    mybaties-plus使用@SelectProvider实现动态SQL新建DynamicSqlProvider.java类packagecom.muphy.mapper;importorg.apache.ibatis.jdbc.SQL;importjava.util.*;publicclassDynamicSqlProvider{publicStringbuildSelectSql(Map<String,Object>params){......
  • mybatis plus 常用知识汇总(保姆级教程!~)
    介绍:MyBatis-Plus是基于MyBatis框架的一个增强工具,主要目的是简化MyBatis的开发过程,提供更加简洁、方便的CRUD操作。它是在保留MyBatis强大功能的基础上,通过封装和优化一些常见操作来提高开发效率。MyBatis-Plus提供了许多开箱即用的功能,包括自动CRUD代码生成、分页......
  • mybatis plus 常用知识汇总(保姆级教程!~)
    介绍:MyBatis-Plus是基于MyBatis框架的一个增强工具,主要目的是简化MyBatis的开发过程,提供更加简洁、方便的CRUD操作。它是在保留MyBatis强大功能的基础上,通过封装和优化一些常见操作来提高开发效率。MyBatis-Plus提供了许多开箱即用的功能,包括自动CRUD代码生成......
  • SpringBoot集成MyBatis-Plus
    初始化SpringBoot项目(添加Lombok和MySQLDriver依赖)  关键依赖包:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xs......
  • 25版王道数据结构课后习题详细分析 第八章 8.4 选择排序
    一、单项选择题————————————————————————————————————————解析:正确答案:————————————————————————————————————————解析:正确答案:——————————————————————......
  • C程序设计语言(第2版·新版)练习题1-21
    练习1-21 编写函数entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变。#include<stdio.h>#defineTAB_WIDTH(8)intreplace_tail_space_with_tab(char*buf,intn){inti=n;if(n!=TAB_WIDTH||buf[n-1]!=''){......
  • C语言--选择结构、循环结构练习题
    1.考虑到多重循环对程序效率的影响,以下哪种实现效率较高?为什么?(a)循环次数大的放在外层,循环次数小的放在内层;(b)循环次数小的放在外层,循环次数大的放在内层;答:(b);因为循环次数小的放在外层,当cpu处理完内层循环后从缓冲区拿取外层循环数据的次数会减少,在cpu内处理数据的时间......