我现在开始为我的课程跳入 C++,我们在 Scheme 中介绍了入队和出队。但是,我们现在是用 C++ 做的,我们需要使用指针,我很难理解。我了解指针是什么,何时使用它们等。但是,我正在努力弄清楚如何在这个实验室中实现它们。我目前有这个代码:
#include <stdlib.h>
#include <iostream>
#include <assert.h>
using namespace std;
struct node {
int item;
node* next;
};
typedef node* nodePtr;
typedef nodePtr* queue;
queue makeQueue() {
queue q = new nodePtr[2];
q[0] = NULL;
q[1] = NULL;
return q;
}
nodePtr start(queue q) {
return q[0];
}
nodePtr tail(queue q) {
return q[1];
}
void setStart(queue q, nodePtr newNode) {
q[0] = newNode;
}
void setTail(queue q, nodePtr newNode) {
q[1] = newNode;
}
bool emptyQueue(queue q) {
return q[0] == NULL;
}
int head(queue q) {
if (emptyQueue(q)) {
cout << "Attempt to take head of an empty queue.\n";
exit(1);
}
return start(q)->item;
}
void enqueue(queue q, int newItem) {
// Answer goes here.
}
void dequeue(queue q) {
// Answer goes here.
}
对于这段代码,我知道我需要做什么:Enqueue 会将 newItem 推送到队列的 cdr(或尾部),而 Dequeue 将删除队列开头的节点,并相应地更新适当的位置。但真正让我困惑的只是指针,我不知道该怎么办。
我将如何深入使用指针编写入队和出队?我将空白地假设入队和出队不应该是一行又一行的代码。
太感谢了!