黑马程序员技术交流社区

标题: data structure 数据结构--queue [打印本页]

作者: James_01    时间: 2016-6-9 03:43
标题: data structure 数据结构--queue
  1. // data structure 数据结构
  2. /*
  3. 数据结构一种组织数据的方法。
  4. 最简单的数据结构是数组。
  5. 数组是一个支持随机访问它的元素的线性list(list)。
  6. */
  7. //queue支持两个基本操作:put和get
  8. // put操作将一个新元素放在队尾;
  9. // get取得队头的下一个元素,每个元素只能检索(取得)一次
  10. class Queue {
  11.         char q[]; //容纳队列的数组
  12.         int putloc, getloc; // put and get 索引

  13.         // Queue构造方法:有参构造
  14.         Queue(int size) {
  15.                 q = new char[size];        // 给队列分配内存
  16.                 putloc = getloc = 0;        //初始化索引为0
  17.         }

  18.         /**
  19.         put()方法,来存储元素(字符)
  20.         @param ch 接收一个char类型的字符
  21.         */
  22.         void put(char ch) {
  23.                 if(putloc == q.length) {        //判断队列是否满了
  24.                         System.out.println("--队列是满的。");
  25.                         return;
  26.                 }

  27.                 q[putloc++] = ch;
  28.         }

  29.         /**
  30.         检索或取出元素,用get()方法。

  31.         */
  32.         char get() {
  33.                 if(getloc == putloc) {        //此时队列为空
  34.                         System.out.println("--队列是空的");
  35.                         return (char) 0;
  36.                 }

  37.                 return q[getloc++];
  38.         }
  39. }

  40. // 测试the Queue class
  41. class QDemo {
  42.         public static void main(String[] args) {
  43.                 Queue bigQ = new Queue(100);
  44.                 Queue smallQ = new Queue(4);
  45.                 char ch;
  46.                 int i;

  47.                 System.out.println("用bigQ来储存字母表。");
  48.                 for(i=0; i<26; i++) {
  49.                         bigQ.put((char) ('A' + i));
  50.                 }
  51.                
  52.                 System.out.print("bigQ 的内容: ");
  53.                 for(i=0; i<26; i++) {
  54.                         ch = bigQ.get();
  55.                         if(ch != (char)0) {
  56.                                 System.out.print(ch);
  57.                         }
  58.                 }

  59.                 System.out.println('\n');
  60.                
  61.                 System.out.println("用smallQ来形成错误信息。");
  62.                 for(i=0; i<5; i++) {
  63.                         System.out.print("企图存储:" + (char)('Z' - i));
  64.                         smallQ.put((char) ('Z' - i));
  65.                         System.out.println();
  66.                 }
  67.                 System.out.println();

  68.                 System.out.print("smallQ的内容:");
  69.                 for(i=0; i<5; i++) {
  70.                         ch = smallQ.get();

  71.                         if(ch != (char) 0) {
  72.                                 System.out.print(ch);
  73.                         }
  74.                 }
  75.         }
  76. }
复制代码

  1. /*output:
  2. 用bigQ来储存字母表。
  3. bigQ 的内容: ABCDEFGHIJKLMNOPQRSTUVWXYZ

  4. 用smallQ来形成错误信息。
  5. 企图存储:Z
  6. 企图存储:Y
  7. 企图存储:X
  8. 企图存储:W
  9. 企图存储:V--队列是满的。


  10. smallQ的内容:ZYXW--队列是空的
  11. 请按任意键继续. . .

  12. */
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2