如何 return 指向线性列表中项目的指针
How to return an pointer to an item in the linear list
我有在线性列表中搜索键的功能,但是当我想要 return 元素上的指针时我出错了。
struct Item
{
datatype key;
Item* next;
Item* prev;
};
int List::search(int x)
{
Item* temp = head;
if (head == NULL)
{
cout << "Empty List" << endl;
}
while (temp != NULL)
{
if (temp->key == x)
{
break;
}
else
{
temp = temp->next;
}
}
return *temp;\here i have a error
}
这里:
int List::search(int x)
{
Item* temp = head;
...
return *temp;\here i have a error
}
如果要获取指向元素的指针,那么函数应该returnItem*
,而不是int
.
如果 temp
是一个 Item*
,那么 *temp
就是一个 Item
。它既不是 Item*
也不是 int
。
也许尝试改变:
Item* List::search(int x)
{
Item* temp = head;
if (temp == NULL)
{
cout << "Empty List" << endl;
return NULL;
}
while (temp != NULL)
{
if (temp->key == x)
{
return temp;
}
else
{
temp = temp->next;
}
}
return NULL;
}
How to return an pointer to an item in the linear list
显然,对于初学者来说,您需要将函数的 return 类型从 int
更改为 Item *
。
Item * List::search( int x );
并且在函数中你需要return确实是一个指针而不是指向的项目。
该函数不应输出任何消息。函数的用户将根据空指针是否 returned 来决定是否输出任何消息。
应该为常量和非常量列表重载该函数。
这里显示了如何定义它
Item * List::search( int x )
{
Item *target = head;
while ( target != nullptr && target->key != x )
{
target = target->next;
}
return target;
}
和
const Item * List::search( int x ) const
{
const Item *target = head;
while ( target != nullptr && target->key != x )
{
target = target->next;
}
return target;
}
我有在线性列表中搜索键的功能,但是当我想要 return 元素上的指针时我出错了。
struct Item
{
datatype key;
Item* next;
Item* prev;
};
int List::search(int x)
{
Item* temp = head;
if (head == NULL)
{
cout << "Empty List" << endl;
}
while (temp != NULL)
{
if (temp->key == x)
{
break;
}
else
{
temp = temp->next;
}
}
return *temp;\here i have a error
}
这里:
int List::search(int x)
{
Item* temp = head;
...
return *temp;\here i have a error
}
如果要获取指向元素的指针,那么函数应该returnItem*
,而不是int
.
如果 temp
是一个 Item*
,那么 *temp
就是一个 Item
。它既不是 Item*
也不是 int
。
也许尝试改变:
Item* List::search(int x)
{
Item* temp = head;
if (temp == NULL)
{
cout << "Empty List" << endl;
return NULL;
}
while (temp != NULL)
{
if (temp->key == x)
{
return temp;
}
else
{
temp = temp->next;
}
}
return NULL;
}
How to return an pointer to an item in the linear list
显然,对于初学者来说,您需要将函数的 return 类型从 int
更改为 Item *
。
Item * List::search( int x );
并且在函数中你需要return确实是一个指针而不是指向的项目。
该函数不应输出任何消息。函数的用户将根据空指针是否 returned 来决定是否输出任何消息。
应该为常量和非常量列表重载该函数。
这里显示了如何定义它
Item * List::search( int x )
{
Item *target = head;
while ( target != nullptr && target->key != x )
{
target = target->next;
}
return target;
}
和
const Item * List::search( int x ) const
{
const Item *target = head;
while ( target != nullptr && target->key != x )
{
target = target->next;
}
return target;
}