luc_sa 2020-06-07 23:01 采纳率: 0%
浏览 100

[求助]LinkedList的实现及应用,创建两个链表,并输出其中一个,一直报错with return value 3221225477

#define LINKEDLIST_CLASS
#include
#include
using namespace std;
#ifndef NULL
const int NULL = 0;
#endif // NULL

template
class Node
{
private:
Nodenext; //指向后继节点的指针
public:
T data; //数据域
Node(const T& item, Node
ptrnext = NULL);
void InsertAfter(Node *p);
Node *DeleteAfter(void);
Node *NextNode(void) const;
};

template
Node::Node(const T& item, Node* ptrnext) :data(item), next(ptrnext){
}

template
Node *Node::NextNode(void) const{
return next;
}

template
void Node::InsertAfter(Node *p){
p->next = next; //p节点指针域指向当前节点的后继节点
next = p; //当前节点的指针域指向p
}
template

Node *Node::DeleteAfter(void){
Node *tempPtr = next; //将欲删除的节点地址存储到tempPtr中

if (next == NULL)  //如果当前节点没有后继节点,则返回NULL
return NULL;
next = tempPtr->next;  //使当前节点的指针域指向tempPtr的后继节点
return tempPtr;   //返回被删除的节点的地址

}

template
class LinkedList
{
private:
Node *front, *rear;
Node *prevPtr, *currPtr;
int size;
int position;
Node *GetNode(const T& item, Node *ptrNext = NULL);//f
public:
LinkedList(void);//f
LinkedList(const LinkedList& L); //拷贝构造函数f
void Reset(int pos = 0);
void Next(void); //使prevPtr和currPtr移动到下一个节点f
int EndOfList(void) const;//f
void InsertRear(const T& item); //在表尾添加f
T& Data(void);//f
};

template
LinkedList::LinkedList(void) : front(NULL), rear(NULL),prevPtr(NULL), currPtr(NULL), size(0), position(-1){
}

template
LinkedList::LinkedList(const LinkedList& L){
front = rear = NULL;
prevPtr = currPtr = NULL;
size = 0;
position = -1;
CopyList(L);
}

template
NodeLinkedList::GetNode(const T& item, Node ptrNext){
Node *p;
p = new Node(item, ptrNext);
if (p == NULL)
{
cout << "Memory allocation failure!\n";
exit(1);
}
return p;
}

//请在此处补充LinkedList类模板的部分实现代码
//____qcodep____

template
void LinkedList::InsertRear(const T& item){
Node *p = new Node(item, NULL);
if(front == NULL)
front = p;
else
rear->InsertAfter(p);
rear = p;
}

template
int LinkedList::EndOfList(void) const{
if(currPtr->NextNode() == NULL)
return 0;
else
return 1;
}

template
void LinkedList::Next(void){
position++;
prevPtr = currPtr;
if(currPtr != NULL)
currPtr = currPtr->NextNode();
}

template
T& LinkedList::Data(void){
currPtr = front;
return currPtr->data;
}

int main()
{
LinkedList A, B;
//初始化A.B二个链表1
//输入加入链表A的五个整数
int i, item;
for (i = 0; i {
cin >> item;
A.InsertRear(item);
}

//输入加入链表B的五个整数:";
for (i = 0; i<5; i++)
{
    cin >> item;
    B.InsertRear(item);
}


while (!A.EndOfList())
{
    cout << A.Data() << "   ";
    A.Next();
}
cout << endl;

}

  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码