Class linked list
Class linked list
我是一个新手,我不太了解链表,所以当我写程序时,我遇到了麻烦。它在ostream& operator<<(ostream& os, const LinkedList &ll)
中有一个错误,我不知道。这是我的代码:
LinkedList.h
#pragma once
#include<iostream>
using namespace std;
struct Node
{
int infor;
Node *pNext;
};
class LinkedList
{
Node *pHead, *pTail;
int curN;
public:
//default constructor
LinkedList();
//destructor
~LinkedList();
static Node* CreateNode(const int& n);
Node* AddHead(const int &n);
Node* AddTail(const int &n);
Node* RemoveHead();
Node* RemoveTail();
friend ostream& operator<<(ostream& os, const LinkedList &ll);
int& operator[](const int& i);
static int SoNguyenMax();
};
LinkedList.cpp
#include "LinkList.h"
LinkedList::LinkedList()
{
pHead = pTail = NULL;
}
LinkedList::~LinkedList()
{
}
static Node* CreateNode(const int &n)
{
Node *NewNode = new Node;
if (NewNode == NULL)
{
cout << "Khong du bo nho" << endl;
return NULL;
}
else
{
NewNode->infor = n;
NewNode->pNext = NULL;
}
return NewNode;
}
Node* LinkedList::AddHead(const int &n)
{
Node *u = new Node;
u->infor = n;
if (pHead == NULL)
pHead = pTail = u;
else
{
u->pNext = pHead;
pHead = u;
}
return pHead;
}
Node* LinkedList::AddTail(const int &n)
{
Node *u = new Node;
u->infor = n;
if (pHead == NULL)
pHead = pTail = u;
else
{
pTail->pNext = u;
pTail = u;
}
return pTail;
}
Node* LinkedList::RemoveHead()
{
Node *p;
p = pHead;
pHead = pHead->pNext;
delete p;
return pHead;
}
Node* LinkedList::RemoveTail()
{
Node *p, *q;
p = pHead;
while (p != pTail)
{
q = p;
p = p->pNext;
}
pTail = q;
q->pNext = NULL;
delete p;
return pTail;
}
ostream& operator<<(ostream& os, const LinkedList &ll)
{
for (Node *k = ll.pHead; k != NULL; k = k->pNext)
os << k->infor << " ";
return os;
}
主要功能#include"LinkList.h"
int main()
{
LinkedList l;
l.AddHead(15);
l.AddHead(123456);
cout << l << endl;
return 0;
}
:[Autos table:]
- k 0xcdcdcdcd {infor=??pNext = ? ?} Node *
- 噢。pHead 0x00abf4d8 {infor=123456 pNext=0x00abf238 {infor=15 pNext=0xcdcdcdcd {infor=??pNext = ? ?}}}节点* const
- ll{pHead=0x00abf4d8 {infor=123456 pNext=0x00abf238 {infor=15 pNext=0xcdcdcdcd {infor=???pNext = ? ?}}}…}
请帮帮我。谢谢!
尝试使用while循环:
ostream& operator << (ostream &os, const LinkedList &ll)
{
Node* k = ll.pHead;
while (k != NULL)
{
os << k->_data << ", ";
k = k->pNext;
}
return os;
}
但是我发现了一些东西。变量"INFOR"可能与"INFO"混淆
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- C++中带有List类的迭代器Segfault
- 使用"std::unordereded_map"映射到"std::list"对象
- GCC对可能有效的代码抛出init list生存期警告
- 重载Singly Linked List中的赋值运算符
- Linked List in C++ InsertAtFront
- 在C++中有条件地删除Singly Linked List中的元素
- 获取迭代器在基类型 "intrusive doubly linked list" 的指针字典中的位置
- 使用可变参数模板制作类似元组的编译时"linked-list"
- Linked list class
- 'Corrupted double-linked list'内存错误 - OpenCV-Python 3.0.0 和 ARM 上的 Numpy
- C++中的Merge Sort Singly Linked List在大输入时失败
- 正在从Singly Linked Circular List中删除特定节点
- Class linked list
- C++ Singly Linked List - Deque - InsertFront()
- Linked list C++
- C++ doubly linked list
- 堆栈中的无限循环,实现为"Linked List"