现在对C++学习了一段时间,把C++的特性和java做比较有很强烈的快感:P 
自己写了两个版本的Stack: 
Java版本: 
源代码Stack.java 
package org; 
public class Stack ...{ 
public static class Link ...{ 
          
    
        
                            
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()) !
新闻热点
疑难解答
图片精选