爱心论坛互帮互助电脑应用 → [公告]Java版本和C++版本简单Stack程序

分享到:

  共有2867人关注过本帖树形打印复制链接

主题:[公告]Java版本和C++版本简单Stack程序

帅哥哟,离线,有人找我吗?
小猴乖乖
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 等级:小飞侠 帖子:1750 精华:30 积分:16454 金钱:27454 金币:0 魅力:9296 威望:0 登陆:335 注册:2007/4/5 13:51:22 近访:2010/8/25 14:55:41 在线:在线0天0小时0分钟.
离升级差0天20小时0分钟.
目前等级0
[公告]Java版本和C++版本简单Stack程序  发帖心情 Post By:2007/6/1 13:00:22 [只看该作者]

贴子已被锁定

现在对C++学习了一段时间,把C++的特性和Java做比较有很强烈的快感:P

  自己写了两个版本的Stack:

  Java版本:

  源代码Stack.java

以下是引用片段:
  package org;
  public class Stack ...{
  public static class Link ...{
  protected Object data;
  protected Link next;
  public Link(Object data, Link next) ...{
  this.data = data;
  this.next = next;
  }
  }
  private Link head = null;
  public void push(Object data) ...{
  head = new Link(data, head);
  }
  public Object peek() ...{
  return head.data;
  }
  public Object pop() ...{
  if (head == null)
  return null;
  Object o = head.data;
  head = head.next;
  return o;
  }
  } 测试代码StackTest.java
  package org;
  import junit.framework.TestCase;
  public class StackTest extends TestCase ...{
  public void test1() ...{
  Stack s = new Stack();
  assertEquals(null, s.pop());
  s.push("a");
  s.push("b");
  assertEquals("b", s.peek());
  assertEquals("b", s.pop());
  assertEquals("a", s.pop());
  assertEquals(null, s.pop());
  }
  public void test2() ...{
  Stack s = new Stack();
  assertEquals(null, s.pop());
  s.push(new Integer(1));
  s.push(new Integer(2));
  assertEquals(2, ((Integer)s.peek()).intValue());
  assertEquals(2, ((Integer)s.pop()).intValue());
  assertEquals(1, ((Integer)s.pop()).intValue());
  assertEquals(null, s.pop());
  }
  }

  C++版本:

  源代码:

  Stack.cpp

以下是引用片段:
  #include  <fstream>
  #include  <iostream>
  #include  <string
  using namespace std;
  class Stack ...{
  struct Link ...{
  Link* next;
  void* data;
  Link(void* dat, Link* nxt) : data(dat) ,next(nxt) ...{}
  }*head;
  public :
  Stack() : head(0) ...{}
  void push(void* data) ...{
  head = new Link(data, head);
  }
  void* pop() ...{
  if (head == 0)
  return 0;
  void* object = head->data;
  Link* oldHead = head;
  head = oldHead->next;
  delete oldHead;
  return object;
  }
  void* peek() ...{
  return head ? head->data : 0;
  }
  };
  int main() ...{
  ifstream in("Stack.cpp");
  Stack text;
  string line;
  while(getline(in, line))
  text.push(new string(line));
  string* s;
  while((s = (string*)text.pop()) != 0) ...{
  cout << *s << endl;
  delete s;
  }
  }



 回到顶部