我正在研究我的C ++最终项目,我的教授指出我们必须为链表提供三个类文件。
第一个命名的LinkedList包含头部和尾部,以及两个重载的运算符,我们必须将列表用作数组,并在数组的末尾添加一个元素。
第二个命名的Node包含两个通用值Seat和Row。
第三个也是最后一个命名的RNode保存列表中下一个,前一个点的值以及预留状态。
我的问题是当使用我的LinkedList.cpp,定义所有函数时,我无法弄清楚如何将节点设置为等于head,因为类型不同。我可以使用tempNode.setNext(Head);设置列表中的下一个节点。但是当我尝试做tempNode = tempNode.getNext()时,它说类型不一样。让我做这项工作的简单方法是什么?请记住,我是一名具有C ++初学经验的新生;
这是我的代码。
这应该使用链接列表作为数组,并返回指向与传入的整数相关的节点的指针。
int& LinkedList::operator[] (const int &middle) {
RNode *tempNode;
tempNode->setNext(Head);
tempNode = tempNode->getNext(); // Error here
for (int i = 0; i < middle; i++) {
}
}
以下是我目前制作的三个类文件。
链接列表类
#ifndef LINKEDLIST_H_INCLUDED
#define LINKEDLIST_H_INCLUDED
#include "Node.h"
class LinkedList {
private:
Node* Head; // Head of linked list
Node* Tail; // Tail of linked list
public:
// Constructors
LinkedList(); // Set default values
LinkedList(Node*, Node*); // Set values passed in to head and tail
int& operator [] (const int &); // Overloaded [] operator PAGE 854 HOW TO USE THIS
// Treat list like an array.
// First node will be [0]
// Return pointer to node indicated inside of brackets
Node& operator += (const Node &); // Overloaded += operator
// Adds a node to the end of the linked list
// Head
void setHead(Node*); // Sets head of list
Node* getHead(); // Returns the head of list
// Tail
void setTail(Node*); // Sets tail of list
Node* getTail(); // Returns tail of list
};
#endif // LINKEDLIST_H_INCLUDED
预订节点类
#ifndef RNODE_H_INCLUDED
#define RNODE_H_INCLUDED
#include "Node.h"
using namespace std;
class RNode : public Node {
private:
Node* Next; // Next node pointer
Node* Prev; // Previous node pointer
bool reservationStatus(); // Reservation status
public:
// Constructors
RNode(); // Sets default values
RNode(Node*, Node*, bool); // Takes values passed in and sets them
// Overloaded operators
friend ostream &operator << (ostream &, Node*); // Prints out correct symbol based on reservation status
friend istream &operator >> (istream &, Node*); // Prints correct symbol based on reservation status .
// Next
void setNext(Node*); // Sets next node in list
Node* getNext(); // Returns next node in list
// Prev
void setPrev(Node*); // Sets previous node in list
Node* getPrev(); // Returns previous node in list
// Reservation Status
void setReservationStatus(bool); // Sets reservation status of a current node
bool getReservationStatus(); // Returns reservation status
};
#endif // RNODE_H_INCLUDED
节点类
#ifndef NODE_H_INCLUDED
#define NODE_H_INCLUDED
class Node {
protected:
int row;
int seat;
public:
// Constructors
Node(); // Sets default values
Node(int, int); // Sets row and seat to values passed in
// Row
void setRow(int); // Sets row for current node
int getRow(); // Gets row for current node
// Seats
void setSeat(int); // Sets seat for current node
int getSeat(); // Gets seat for current node
};
#endif // NODE_H_INCLUDED
总之,如何匹配类型以便我可以将RNode tempNode设置为等于节点?这非常令人困惑,我无法找到解决这个问题的好解释。
请记住,根据我的指示,我必须以这种方式创建类。如果由我决定,我会将RNode和Node类结合起来。
先谢谢了。