c++链表帮助(指针)
C++ linked list help (pointers)?
template <typename T>
class LinkedNode
{
public:
T data;
LinkedNode<T> *next;
LinkedNode<T> *prev;
LinkedNode<T>();
LinkedNode<T>(T);
};
// Default constructor
template <typename T>
LinkedNode<T>::LinkedNode()
{
next = NULL;
prev = NULL;
}
template <typename T>
class LinkedList
{
private:
LinkedNode<T> *head;
public:
LinkedList<T>();
~LinkedList<T>();
void addFront(T);
void addBack(T);
void addAt(T, int);
void removeFront();
void removeBack();
void removeAt(int);
void printList();
};
// Constructor
template <typename T>
LinkedList<T>::LinkedList()
{
head = NULL;
}
// Add new node to front
template <typename T>
void LinkedList<T>::addFront(T d)
{
LinkedNode<T> temp;
temp.data = d;
if (head == NULL)
{
head = &temp;
}
else
{
temp.next = head;
head->prev = &temp;
head = &temp;
}
}
// Add new node to back
template <typename T>
void LinkedList<T>::addBack(T d)
{
// Find the back of this list
LinkedNode<T> *ptr;
ptr = head;
while (ptr->next != NULL) // <------- DIES HERE, MEMORY ACCESS VIOLATION
{
ptr = ptr->next;
}
// Make a new node and join it to the back
LinkedNode<T> temp;
temp.data = d;
temp.prev = ptr;
ptr->next = &temp;
}
这是我的链表系统的一个片段。问题是它会在指定的行上抛出错误。调试器说,"头"指针指向LinkedNode的合法内存地址,没有"下一个"或"prev",但"ptr"指针指向地址0xcccccc,而不是头的地址?我真的很困惑,我以为我懂指针!
void LinkedList<T>::addFront(T d)
{
LinkedNode<T> temp;
temp.data = d;
...
head = &temp;
...
}
temp
是一个自动存储的变量,一旦addFront
函数返回,它的生命周期就会结束,你将得到一个指向无效对象的指针。您必须在堆中分配节点,请这样做:
LinkedNode<T>* temp = new LinkedNode<T>;
temp->data = d;
...
head = temp;
我确认了K-ballo的答案。问题是,当addFront函数离开其作用域时,您添加的对象将被销毁。你得到的是一个无效指针的列表。
如上所示用new分配元素,但不要忘记在从列表中删除元素时进行清理(删除指针)。
相关文章:
- 在指针的帮助下,文本文件中单词的频率
- C++指针/数组(我现在完全困惑,真的需要帮助)
- 指针帮助:取消指向访问其内部数据的结构的指针
- 函数和指针帮助:程序生成,但崩溃,没有任何特定错误
- C 指针节点帮助 - 将参数复制到链接的列表节点更改该节点的不同部分
- 作业帮助,分割故障,双免费或腐败,免费():无效的指针
- C++中的指针帮助
- 需要帮助了解指针变量分配
- BST c++ 中的指针帮助
- C 帮助(ISO C 禁止指针和整数之间的比较.)
- C++ 指针帮助缺少参数列表使用 &帐户::获取余额
- 请帮助我理解上述代码行为。了解 void 指针和双 void 指针操作
- 在指针的帮助下交换的情况下无法生成错误
- Char 数组解释为构造函数中的 char 指针请帮助
- C++ 概念帮助,指针
- 如何在 c++ 中将包含指针变量的对象写入和读取到文件中?帮助我使用以下代码
- 在结构指针方面需要帮助
- 在下面的例子中,如何在C++中使用智能指针有帮助
- 将节点附加到C++树(参考和指针帮助)
- 向指针添加"const"可以帮助优化吗?