| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 编程开发 > Visual C++教程 > 文章正文 用户登录
提供免费100GB的数
益网数据免费提供
从暴风数据看视频
《数据中国》网站
初次创业:选址请
初次创业:选址请
FLASH调用XML数据
使用report build
flash动态读取xml
Flash MX 2004 数

数据结构学习(C++)——栈和队列(定义和实现)           

数据结构学习(C++)——栈和队列(定义和实现)

作者:佚名 来源:CSDN 作者: happycock 更新:2006-8-25 21:05:35 错误报告 我要投稿

栈和队列是操作受限的线性表,好像每本讲数据结构的数都是这么说的。有些书按照这个思路给出了定义和实现;但是很遗憾,这本书没有这样做,所以,原书中的做法是重复建设,这或许可以用不是一个人写的这样的理由来开脱。

顺序表示的栈和队列,必须预先分配空间,并且空间大小受限,使用起来限制比较多。而且,由于限定存取位置,顺序表示的随机存取的优点就没有了,所以,链式结构应该是首选。

栈的定义和实现

#ifndef Stack_H

#define Stack_H

 

#include "List.h"

 

template <class Type> class Stack : List<Type>//栈类定义

{

      

public:

       void Push(Type value)

       {

              Insert(value);

       }

 

       Type Pop()

       {

              Type p = *GetNext();

              RemoveAfter();

              return p;

       }

 

       Type GetTop()

       {

              return *GetNext();

       }

      

       List<Type> ::MakeEmpty;

 

       List<Type> ::IsEmpty;

      

};

 

#endif

队列的定义和实现

#ifndef Queue_H

#define Queue_H

 

#include "List.h"

 

template <class Type> class Queue : List<Type>//队列定义

{

public:

       void EnQueue(const Type &value)

       {

              LastInsert(value);

       }

      

       Type DeQueue()

       {     

              Type p = *GetNext();

              RemoveAfter();

              IsEmpty();

              return p;

       }

 

       Type GetFront()

       {

              return *GetNext();

       }

 

       List<Type> ::MakeEmpty;

 

       List<Type> ::IsEmpty;

};

 

#endif

测试程序

#ifndef StackTest_H

#define StackTest_H

 

#include "Stack.h"

 

void StackTest_int()

{

       cout << endl << "整型栈测试" << endl;

       cout << endl << "构造一个空栈" << endl;

       Stack<int> a;

       cout << "将1~20入栈,然后再出栈" << endl;

      for (int i = 1; i <= 20; i++) a.Push(i);

       while (!a.IsEmpty()) cout << a.Pop() << ' ';

       cout << endl;

}

 

#endif

 

#ifndef QueueTest_H

#define QueueTest_H

 

#include "Queue.h"

 

void QueueTest_int()

{

       cout << endl << "整型队列测试" << endl;

       cout << endl << "构造一个空队列" << endl;

       Queue<int> a;

       cout << "将1~20入队,然后再出队" << endl;

      for (int i = 1; i <= 20; i++) a.EnQueue(i);

       while (!a.IsEmpty()) cout << a.DeQueue() << ' ';

       cout << endl;

}

 

#endif

【后记】没什么好说的,你可以清楚的看到,在单链表的基础上,栈和队列的实现是如此的简单,这也是我对于原书重复建设不满的最大原因。

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。