【发布时间】:2019-08-05 07:11:48
【问题描述】:
我浏览了论坛,但似乎找不到这个非常笼统的问题的答案。下面的类是一个基本的单链表,pushBack 以标准方式编写。
class linkedList {
private:
typedef struct node {
int data;
struct node *next;
node(int d):data(d), next(NULL){}
}*nodePtr;
nodePtr head, temp, curr;
public:
linkedList():head(NULL), temp(NULL), curr(NULL){}
void pushBack(int d) {
temp = new node(d);
curr = head;
if (curr != NULL) {
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = temp;
} else head = temp;
}
void printAll() {
curr = head;
cout << "list:" << endl;
while (curr) {
cout << curr->data << " ";
curr = curr->next;
}
cout << endl;
}
};
但是为什么我的pushBack函数不能这样写呢?
void pushBack(int d) {
temp = new node(d);
curr = head;
while (curr != NULL) {
curr = curr->next;
}
curr = temp;
}
它应该遍历列表直到 curr == NULL,然后设置 curr = temp。如果列表为空,则它不会进入循环,并且通过将 temp 设置为 curr(其自身设置为 head)将 head 设置为新节点。
逻辑对我来说非常有意义,所以它一定是我缺少的其他东西。
感谢您的帮助!
【问题讨论】:
-
在“...为什么我的pushBack函数不能这样写?”是一个矛盾:你写了它,但声称它不能写。所以请准确地说出你的意思。
-
很明显“为什么我的pushBack函数不能这样写?”意思是“为什么这样写时它不起作用”......多么毫无意义的批评,哈哈。