以下是我嘗試在鏈表的通用表示形式,其中我通過整數示例。我知道問題在於我如何分配下一個(通過add_to_list函數),但在盯着屏幕2個小時後,我仍然不知道什麼是錯誤的。有人能指導我完成它嗎?C++:調試通用鏈接列表所需的幫助
#include<iostream>
using namespace std;
/** Class Definition here */
template<typename T>
class Linklist
{
struct node
{
node(T value,node* next=NULL):value(value),next(next) {}
node* next;
T value;
};
node* head;
node* curr;
public:
Linklist(node* n=0):head(n) {}
~Linklist();
void add_to_list(T value, bool x=1);
void print();
};
/** Class destructor */
template<typename T>
Linklist<T>::~Linklist()
{
node *ptr ;
while(head!=NULL)
{
ptr=head;
head=head->next;
delete ptr;
}
}
template <typename T >
void Linklist<T>::add_to_list(T x, bool z)
// bool basically means if to add the element to beginning or end of list, 1 for end.
{
node* k=new node(x);
if(head==NULL)
{
k->value=x;
k->next=NULL;
head=curr=k;
}
else
{
k->value=x;
k->next=NULL;
if (z==1)
{
curr->next=k;
curr=k;
}
else
{
k->next=head;
head=k;
}
}
delete(k);
}
template<typename T>
void Linklist<T>::print()
{
node* ptr= new node(1);
ptr=head;
if (ptr==NULL)
{
return ;
}
else
{
cout<<"reached here \n " <<"pointer is"<<ptr->value<<"\n next is"<<ptr->next;
while(ptr!=NULL)
{
cout<<ptr->value<<"-->";
ptr=ptr->next;
}
}
}
int main()
{
Linklist<int> *intlist=new Linklist<int>();
intlist->add_to_list(20,0);
intlist->add_to_list(344,1);
intlist->print();
return 0;
}
您看到了什麼輸出? – andy256
你錯過了實際的問題。 – chris
@ andy256,只是第一個元素(即1 - >) 我一步一步檢查分析,下一個函數每次返回0,但不能看到爲什麼。 –