我设计了这个代码,以便我可以在圆形单链表中获取用户想要的任何位置的指针,我使用cout返回指针,我想要这样一种机制,我可以将它与我的其他函数一起使用重新编写整个代码,为此我需要做一些返回类型的东西,现在是无效的
这是函数..
void pointer_to_node(int index){
Node*temptr;
temptr = new Node;
temptr = firstptr;
Node*temptr2;
temptr2 = new Node;
temptr2 = NULL;
int count = 1;
while (temptr!=temptr2){
if(count==index){
cout << "Required Pointer is : ";
cout<< temptr;}
count++;
temptr2=firstptr;
temptr=temptr->nextptr;
}
if (index>size_of_list())
{
temptr=NULL;
cout<< "Can't You think in bounds. Take your NULL Pointer ";
cout << temptr;
delete temptr;
delete temptr2;
}
}
答案 0 :(得分:1)
您只需要返回Node *
。
然而,当你这样做时,你还需要取出这些:temptr = new Node;
行,以及delete
,因为你在那里泄漏了内存。您只需通过重新分配指针即可立即丢弃这些新节点。最后的delete
将完全删除错误的节点,并且无论如何都不会被调用。
如果您传递的索引为0,那么您的循环可能需要很长时间。
我假设你有充分的理由想要在列表中循环时返回NULL。
以下内容应该足够了:
Node *pointer_to_node(int index)
{
Node *temp = firstptr;
while(index-- != 0) {
temp = temp->nextPtr;
if(temp == firstptr) return NULL;
}
return temp;
}