gpt4 book ai didi

C++ 冒泡排序链表

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:28:33 26 4
gpt4 key购买 nike

我是一名 C++ 初学者,我正在尝试定义一个 BubbleSort 函数来对链表中的元素进行排序。但是错误发生在

for(current = firstPtr ; current != 0 ; current= current ->nextPtr)

First-chance exception at 0x01375557 in 111.exe: 0xC0000005: Access violation reading  location 0x00000000.
Unhandled exception at 0x01375557 in 111.exe: 0xC0000005: Access violation reading location 0x00000000.

核心代码如下:

 //define Node in class List
//Node.h
template<typename T> class List;

template<typename T>
class Node{
friend class List<T>;

public:
Node(T &); //constructor
T getData() const; //access data

private:
T data;
Node<T> *nextPtr; //point to the next Node
};

template<typename T>
Node<T> ::Node(T &key):data(key),nextPtr(0){}

template<typename T>
T Node<T>::getData()const{
return data;
}


//clase List
//List.h
#include<iostream>
#include"Node.h"
using namespace std;

template <typename T>
class List{
public:
List();
void insertAtFront(T );
void insertAtBack( T &);
bool removeFromFront(T &);
bool removeFromBack(T &);
bool isEmpty() const;
void print() const;
void BubbleSort();
private:
Node<T> *firstPtr;
Node<T> *lastPtr;

Node<T> *getNewNode(T&);

};

template<typename T>
List<T> :: List():firstPtr(0),lastPtr(0){}

template<typename T>
void List<T>::BubbleSort(){
Node<T> *current; //Point to the current node
Node<T> *temp = firstPtr; //hold the data of first element
for(bool swap = true; swap;){ // if no swap occurs, list is in order
swap =false;
for(current = firstPtr ; current != 0 ; current= current ->nextPtr){
if (current->data > current->nextPtr->data){ //swap data
temp->data = current->data;
current->data = current->nextPtr->data;
current->nextPtr->data = temp ->data;
swap = true;
}

}
}
}

你们能帮我解决一下吗?我使用调试但仍然找不到解决方案。谢谢。

最佳答案

在您的内部循环中,当您尝试查看其数据时,您假设 current->nextPtr 不为空。列表中的最后一个节点不是这种情况。尝试从

改变你的内循环条件

当前 != 0

current != 0 && current->nextPtr != 0

关于C++ 冒泡排序链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com