1

这是一个创建具有 2 个值的链表的代码 - 一个用户输入和另一个 7。

#include<iostream>
#include<cstdlib>

using namespace std;

class node{
public:
    node();
    ~node();
    void printList();
    void insert_front(int);
    void delete_front();
private:
    int data;
    node *head;
    node *next;
};
node::node()
{
    head=NULL;
}
node::~node( ){//destructor
    cout <<"destructor called";
    while( head!= NULL) delete_front() ;
}
void node::delete_front(){
    node *h=head;
    if(head==NULL)
    {
        cout<< "Empty List.\n";
        return;
    }
    head = head->next;
    delete(h);
}
void node::printList()
{
    node *h=head;
    cout<< "Printing the list";
    while(h!=NULL)
    {
        cout<< h->data;
        cout<< '\n';
        h->next= h->next->next;
    }
}
void node::insert_front(int value){
    node *temp = new node;
    temp->data=value;
    temp -> next = NULL;
    if (head != NULL){
        temp->next =head;
    }
    head= temp;
}

int main()
{
    node ListX;
    cout<< "enter integer";
    int as;
    cin>> as;
    ListX.insert_front(as);
    ListX.insert_front(7);
    ListX.printList();
    ListX.~node( );//call destructor to free objects
    return 0;
}

请告诉其中的错误,因为它在http://www.compileonline.com/compile_cpp_online.php甚至在我的笔记本电脑上在线编译时显示错误。

4

1 回答 1

3

h->next= h->next->next;

你想在这里实现什么?

while将循环更改void node::printList()为:

while(h!=NULL)
{
  cout<< h->data;
  cout<< '\n';
  h= h->next;
}
于 2013-08-25T18:39:24.900 回答