2010-07-23 54 views
1

这里是代码来实现链表我希望你理解这个代码,这种代码的主要目的是用Java编写的,我试图在C++实现链表从Java到C++

#include <iostream> 
using namespace std; 
class link { 
public: 
    int idata; 
    double ddata; 
    link (int id,double dd){ 
     idata=id; 
     ddata=dd; 
    } 
public : 
    void display(){ 

     cout<<idata<<"=>"; 
     cout<<ddata; 

    } 

}; link next; 


class linked_list{ 
public : 
    link first; 

public: 
    linked_list(){ 

     first=NULL; 
    } 

public: 
    bool isempthy(){ 
     return (first==NULL); 
    } 
    void insert(int id,double dd){ 






link newlink= link(id,dd); 
newlink.next=first; 
first=newlink; 

} 








int main(){ 




    return 0; 
} 

但有一些错误,请帮助我,我认为它是可以重写在C编写的Java代码

+0

我会说我不懂你的英语。然后我会说,linked_list接口有点奇怪。它不像java的LinkedList。那么,如果代码没有从它的任务中做任何事情,我怎么能找到bug呢? – foret 2010-07-23 12:33:24

+0

它是来自Java第二版 中的算法和数据结构的代码,也是关于我的英语对不起,我不是英语的人,所以对不起:) – 2010-07-23 12:35:00

+1

如果您正在学习C++,那么您最好从一开始就以好而不是试图移植你的Java知识。他们是完全不同的语言。尤其是,您需要理解指针和内存管理以在C++中实现链表 - 这些是您的代码中的主要错误。 – 2010-07-23 12:36:28

回答

1

您需要使用C++中的指针来创建列表元素之间的连接。

我建议在尝试创建自己的实现之前,阅读C++中的一些单链表example(或this)。

3
#include <iostream> 
using namespace std; 

class link { 
public: 
    int idata; 
    double ddata; 
    link* next; 

    link (int id,double dd){ 
     idata=id; 
     ddata=dd; 
     next = NULL; 
    } 

    void display(){ 
     cout<<idata<<"=>"; 
     cout<<ddata; 
    } 
}; 


class linked_list{ 
public : 
    link* first; 

    linked_list(){ 
     first = NULL; 
    } 

    ~linked_list(){ 
     while(first != NULL){ 
     link* ptr = first->next; 
     delete first; 
     first = ptr; 
     } 
    } 

public: 
    bool isempthy(){ 
     return (first == NULL); 
    } 

    void insert(int id,double dd){ 
     link* newlink = new link(id,dd); 
     newlink->next= first; 
     first = newlink; 
    } 


int main(){ 
    return 0; 
}