java

位置:IT落伍者 >> java >> 浏览文章

Java版本和C++版本简单Stack程序


发布日期:2020年09月05日
 
Java版本和C++版本简单Stack程序

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

自己写了两个版本的Stack:

Java版本:

源代码Stackjava

package org;

public class Stack {

public static class Link {

protected Object data;

protected Link next;

public Link(Object data Link next) {

thisdata = data;

thisnext = next;

}

}

private Link head = null;

public void push(Object data) {

head = new Link(data head);

}

public Object peek() {

return headdata;

}

public Object pop() {

if (head == null)

return null;

Object o = headdata;

head = headnext;

return o;

}

} 测试代码StackTestjava

package org;

import junitframeworkTestCase;

public class StackTest extends TestCase {

public void test() {

Stack s = new Stack();

assertEquals(null spop());

spush(a);

spush(b);

assertEquals(b speek());

assertEquals(b spop());

assertEquals(a spop());

assertEquals(null spop());

}

public void test() {

Stack s = new Stack();

assertEquals(null spop());

spush(new Integer());

spush(new Integer());

assertEquals( ((Integer)speek())intValue());

assertEquals( ((Integer)spop())intValue());

assertEquals( ((Integer)spop())intValue());

assertEquals(null spop());

}

}

C++版本:

源代码:

Stackcpp

#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() {}

void push(void* data) {

head = new Link(data head);

}

void* pop() {

if (head == )

return ;

void* object = head>data;

Link* oldHead = head;

head = oldHead>next;

delete oldHead;

return object;

}

void* peek() {

return head ? head>data : ;

}

};

int main() {

ifstream in(Stackcpp);

Stack text;

string line;

while(getline(in line))

textpush(new string(line));

string* s;

while((s = (string*)textpop()) != ) {

cout << *s << endl;

delete s;

}

}

上一篇:剑客vs刀客 Java vs .NET之霸道的.NET

下一篇:一道求单向链表倒数第N个结点的算法题