网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.给MSN Messager装个钩子.
.把其它程序(如网页等)的文字拖放.
.通过预编译头文件来提高CB的编译.
.使用ASP.NET Atlas开发检测密码强.
.完美的C++:C++/CLI.
.在Listboxes中加背景图.
.C/C++编程新手错误语录(续二).
.软件接口的历史和未来.
.在 Linux 下用 C 编写显示时间的.
.如何自定义提示窗口(Hint Window).
.怎样用C语言编写一个DOS下的中断.
.自动化基础概念之“COM组件与接口.
.VC连接SQL SERVER数据库.
.C语言入门之指针的慨念(1).
.控制台窗口界面的编程控制(四).
.C++箴言:用非成员非友元函数取代.
.在单独线程中执行对象成员函数.
.C++箴言:如何访问模板化基类中的.
.在 C++中处理错误.
.全屏幕OpenGL程序.

C++数据结构学习:栈和队列

发表日期:2008-3-8


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

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

  栈的定义和实现
  #ifndef Stack_H
  #define Stack_H
  #include "List.h"
  template class Stack : List//栈类定义
  {
  public:
  void Push(Type value)
  {
  Insert(value);
  }
  Type Pop()
  {
  Type p = *GetNext();
  RemoveAfter();
  return p;
  }
  Type GetTop()
  {
  return *GetNext();
  }
  List ::MakeEmpty;
  List ::IsEmpty;
  };
  #endif
更多文章 更多内容请看C/C++技术专题  数据结构  数据结构教程专题,或   队列的定义和实现
  #ifndef Queue_H
  #define Queue_H
  #include "List.h"
  template class Queue : List//队列定义
    {
  public:
  void EnQueue(const Type &value)
    {
  LastInsert(value);
    }
  Type DeQueue()
  {
    Type p = *GetNext();
    RemoveAfter();
    IsEmpty();
    return p;
  }
  Type GetFront()
  {
    return *GetNext();
  }
  List ::MakeEmpty;
  List ::IsEmpty;
  };
  #endif
更多文章 更多内容请看C/C++技术专题  数据结构  数据结构教程专题,或   测试程序
  #ifndef StackTest_H
  #define StackTest_H
  #include "Stack.h"
  void StackTest_int()
  {
  cout << endl << "整型栈测试" << endl;
  cout << endl << "构造一个空栈" << endl;
  Stack 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 a;
  cout << "将1~20入队,然后再出队" << endl;
  for (int i = 1; i <= 20; i++) a.EnQueue(i);
  while (!a.IsEmpty()) cout << a.DeQueue() << ' ';
  cout << endl;
  }
  #endif

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

更多文章 更多内容请看C/C++技术专题  数据结构  数据结构教程专题,或
上一篇:C++数据结构学习:用栈做表达式求值 人气:1287
下一篇:C语言中的面向对象(3)-类模拟的性能分析 人气:426
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐