目的:了解了链表的定义与实现,学会了其使用方法;了解了栈类的定义和实现,学会了其使用方法;了解了队列的定义和实现,学会其使用方式;了解了c++标准模板库STL的使用方式.
内容
程序:
//Lab9_2.cpp
//linkedlist.h
#include<malloc.h>
#ifndef LINKEDLIST_CLASS
#define LINKEDLIST_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
#ifndef NULL
const int NULL = 0;
#endif // NULL
template <class T>
class LNode
{private:
public:
T num;
LNode<T> *_next;
};
template <class T>
class LinkList
{ private:
public:
LNode<T> *_head;
int _len;
LNode<T> *initList(void)// 建立一个带头节点的空链表的函数
{LNode<T> *h;
h=(LNode<T> *)malloc(sizeof(LNode<T>));
h->num=0;// 头节点的指数赋值为-1
h->_next=NULL;
return h;}
void CreatPolyn(LinkList<T> p,int m,T j);//创建链表};
template <class T>
void LinkList<T>::CreatPolyn(LinkList<T> p,int m,T j)//创建链表
{ LNode<T> *h,*e,*q;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
h=p.initList();//创建一个带头节点的空链表
q=e=h;
p._head=h;
p._len=m;
for(int i=1;i<=m;++i)
{cout<<"请输入第"<<i<<"项的数:";// 输入数
cin>>j;
e=(LNode<T> *)malloc(sizeof(LNode<T>));
e->num=j;// 把新节点插入到链表中
e->_next=NULL;
q->_next=e;
q=q->_next;}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
h=p._head;//显示构建的链表节点中的数值
e=h->_next;
int i1=1;
while(e)
{cout<<"链表中节点"<<i1<<"中存储的值是"<<endl;
cout<<e->num<<endl;
m--;
e=e->_next;
i1++;}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
e=q=p._head;// 使用循环释放链表中每个节点的内存空间
int i2=0;
while(p._len+1)
{ q=q->_next;
cout<<"释放"<<i2<<"节点!"<<endl;
free(e); //释放链表中节点的内存空间
e=q;
p._len--;
i2++;}// 释放链表中节点的内存空间
}#endif
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//queue.h
#ifndef QUEUE_CLASS
#define QUEUE_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
#ifndef NULL
const int NULL = 0;
#endif // NULL
#include "linkedlist.h"
template <class T>
class Queue
{ private:
T j0;
int m0;
public:
void CreatQueue(int m,T j)//创建
{ j0=j;
m0=m;
LinkList<T> L;
L.CreatPolyn(L,m0,j0);
};
//成员函数的实现
#endif
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Lab9_2
#include"queue.h"
void main()
{int n;
n1:cout<<"====================================="<<endl;
cout<<" **输入类型的菜单**"<<endl<<endl;
cout<<"1.int型 2.float型 "<<endl<<"3.double型 4.char型"<<endl;
cout<<"====================================="<<endl;
cout<<"请选择你的输入类型:";
int k1; cin>>k1;
cout<<"请输入你要输入的个数:";
cin>>n;
switch(k1)
{
case 1:int j1;
Queue<int> L1;
L1.CreatQueue(n,j1);
cout<<"====================================="<<endl;
cout<<"你的操作选项有:"<<endl<<"1.继续操作 2.结束操作"<<endl;
cout<<"====================================="<<endl;
int m1; cout<<"请输入你的选择:"; cin>>m1;
if(m1==1) goto n1;
else break;
case 2:float j2;
Queue<float> L2;
L2.CreatQueue(n,j2);
cout<<"====================================="<<endl;
cout<<"你的操作选项有:"<<endl<<"1.继续操作 2.结束操作"<<endl;
cout<<"====================================="<<endl;
int m2; cout<<"请输入你的选择:";
cin>>m2;
if(m2==1) goto n1;
else break;
case 3:double j3;
Queue<double> L3;
L3.CreatQueue(n,j3);
cout<<"====================================="<<endl;
cout<<"你的操作选项有:"<<endl<<"1.继续操作 2.结束操作"<<endl;
cout<<"====================================="<<endl;
int m3; cout<<"请输入你的选择:";
cin>>m3;
if(m3==1) goto n1;
lse break;
case 4:char j4;
Queue<char> L4;
L4.CreatQueue(n,j4);
cout<<"====================================="<<endl;
cout<<"你的操作选项有:"<<endl<<"1.继续 2.结束操作"<<endl;
cout<<"====================================="<<endl;
int m4; cout<<"请输入你的选择:";
cin>>m4;
if(m4==1) goto n1;
else break;
default:
cout<<"你的输入不合法!请重新选择!"<<endl;
goto n1;
break;
}
}
//Lab9_3.cpp
#include <iostream>
#include <deque>
using namespace std ;
int main()
{int n;cout<<"请输入你要输入的个数:";
cin>>n;
deque<int> d;//构造一个队列用于存放整数
int key, item;
for(int i=0;i <n;i++)// 输入n个整数依次向队列插入
{cout<<"输入第"<<i+1<<"个值"<<endl;
cin>>item;
d.push_back(item); //实现插入前一个数的后面的功能数值
//d.push_front(item); //实现插入前一个数的前面的功能数值}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cout<<"输入的队列是:"; // 输出队列
deque<int>::iterator p=d.begin();
while(p!=d.end()) //输出数据,直到队列尾
{ cout <<*p << " ";
p++; }
cout<<endl<<"队列长度是"<<d.size()<<endl; //输出队列长度
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
d.pop_front(); //实现删除队列第一个值
//d.pop_back(); //实现删除队列最后一个值
cout<<"用pop_front()删除第一个数后的队列是:"; // 输出队列
deque<int>::iterator p1=d.begin();
while(p1!=d.end()) //输出各数据,直到队列尾
{
cout <<*p1 << " ";
p1++;
}
cout<<endl<<"队列长度是"<<d.size()<<endl; //输出队列长度
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cout<<"d.empty()显示是"<<d.empty()<<endl; //实现访问???
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
return 0;
}
分享到:
相关推荐
在《数据结构C++语言描述——应用标准模板库(STL)》这本书中,你将深入学习如何利用STL来实现常见的数据结构,如堆、队列、栈等。作者可能通过实例演示了如何使用STL容器、算法和函数对象来解决实际问题,同时也...
在本篇内容中,我们将详细介绍STL中的几个基本概念:栈(Stack)、链表(List)、map、set。 ### 栈(Stack) #### 定义与特性 栈是一种特殊的线性表,其特点是只能在表的一端进行插入和删除操作,遵循后进先出...
本书将详细介绍链表、栈、队列、数组、树(如二叉树、平衡树)、图等经典数据结构,以及它们在C++中的实现方式。理解这些数据结构及其操作能够帮助开发者有效地组织和管理数据。 四、算法 算法是解决问题的有效工具...
在"数据结构C++语言描述——应用标准模板库(STL)源代码"这本书中,作者可能详细解释了如何使用C++的STL来实现常见的数据结构,以及如何利用STL提供的工具优化代码性能。通过分析书中的源代码ftsoftds_VC++6,我们...
《数据结构与程序设计——C++描述》是高等教育出版社出版的一本教材,由Bobert L. Kruse和Alexander J. Ryba共同编写。这本书深入探讨了如何使用C++语言进行数据结构的实现和程序设计,旨在帮助学生和程序员掌握数据...
《C++语言描述——数据结构算法与应用》是一本针对C++编程者深入理解数据结构和算法的重要参考资料。这本书以C++为工具,系统地阐述了数据结构的基本概念、常用算法及其在实际问题中的应用。对于初学者而言,它不仅...
C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且灵活的容器、迭代器、算法和函数对象等工具,极大地提升了代码的可读性和复用性。STL的核心概念...
《算法设计与分析——C++ 语言描述》是由陈慧南编著的一部教材,主要针对计算机科学领域的核心课程——算法设计与分析进行深入讲解。这本书由电子工业出版社出版,旨在帮助学生和专业人士掌握如何使用C++语言来设计...
在《C++语言程序设计》中,读者会学习到数组、链表、栈、队列、树、图等基本数据结构的实现和应用。例如,数组是一种线性数据结构,允许我们存储同类型的多个元素,而链表则提供了一种动态分配内存的方法,可以更...
在C++中,我们可以使用标准模板库(STL)来方便地使用这些数据结构,如`std::vector`对应数组,`std::list`对应链表,`std::stack`和`std::queue`对应栈和队列。然而,对于更复杂的数据结构如树和图,通常需要自定义...
标题“C++实现用栈实现队列的功能”表明我们将使用C++编程语言,通过创建两个栈来实现队列的主要功能:入队(enqueue)和出队(dequeue)。这种方法的思路是,一个栈用于入队操作,另一个栈用于出队操作,以此来克服...
此外,这些数据结构还可以结合其他高级概念,如指针、引用、模板和STL容器,实现更复杂的功能,比如用栈和队列实现各种算法,或者用链表实现自定义容器。 深入学习C++的栈、队列和链表,不仅可以提升编程技巧,还能...
本主题将深入探讨线性表、链表、队列、栈这四种基本的数据结构,并以C++语言为例,通过相关源代码(stringData.cpp、seqList.cpp、node.cpp、seqQueue.cpp、linkQueue.cpp、linkStack.cpp、seqStack.cpp)来解析其...
本项目以C++语言为实现工具,涵盖了三种基本的数据结构:栈、队列和链表,并提供了相关的操作函数,如初始化、插入元素和删除元素等。 首先,让我们详细探讨栈(Stack)这一数据结构。栈是一种后进先出(LIFO)的...
《C++语言程序设计第五版》是郑莉教授编著的一本深入介绍C++编程的教材,适合初学者和有经验的程序员进一步提升C++技能。这本书的重点在于讲解C++的基础知识,高级特性以及如何有效地设计和实现程序。在描述中提到的...
《数据结构、算法与应用——C++语言描述》是一本深入探讨计算机科学核心领域的经典教材。数据结构和算法是编程的基础,它们对于理解和优化程序性能至关重要。本书通过C++语言来阐述这些概念,使得读者能够更好地掌握...
在"c++STL学习——各种容器的技术总结和用法代码实例"中,我们将深入探讨C++ STL的容器部分。 1. 容器概览: C++ STL中的容器是一些类模板,用于存储和管理元素集合。常见的容器有向量(vector)、列表(list)、...
C++标准模板库(STL)是C++编程语言中的一个重要组成部分,它提供了一组高效、可重用的容器、迭代器、算法和函数对象,大大简化了数据结构和算法的实现。STL手册通常会详细阐述这些组件的使用方法,提供实例代码,...
在这个C++实现的数据结构算法集中,主要涉及了几个核心概念:队列、堆栈和链表,这些都是数据组织和操作的基本工具。 首先,让我们来看看堆栈(Stack)。堆栈是一种后进先出(LIFO)的数据结构,它的操作类似于日常...
《数据结构 C++语言描述--应用标准模板库(STL)(第2版)》这本书是一本专为初学者设计的数据结构入门教材,其特色在于将数据结构与C++中的标准模板库(STL)紧密结合,使读者在学习数据结构的同时,能够掌握现代...