Java版本和C++版本简朴Stack措施
当前位置:以往代写 > JAVA 教程 >Java版本和C++版本简朴Stack措施
2019-06-14

Java版本和C++版本简朴Stack措施

Java版本和C++版本简朴Stack措施

副标题#e#

此刻对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()); 
  } 
  }


#p#副标题#e#

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;
}
}

    关键字:

在线提交作业