簡體   English   中英

從文本文件中將整數讀入一個簡單的鏈表。 然后對整數列表進行冒泡排序並讀出到另一個文件

[英]Read integers into a simple linked list from text file. Then bubblesort the list of integers and read out to another file

從文本文件中將整數讀入一個簡單的鏈表。 然后對整數列表進行冒泡排序並讀出到另一個文件。 現在我正在閱讀主要內容,但我試圖重載提取運算符以閱讀它,但我不知道如何去做。 我的Bubblesort功能也引起了很多問題。 它告訴我該函數不能重載,並且節點標識符未聲明等。 任何幫助將不勝感激

主文件

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <fstream>
#include "bubble.h"

using namespace std;
struct nodeType
{
    int info;
    nodeType* link;
};

node *head_ptr = NULL;
void Display();
void list_clear(nodeType*& head_ptr);
void list_copy(const nodeType* source_ptr, nodeType*&head_ptr, nodeType*&tail_ptr);
Bubblesort();


int main()
{
    ifstream datld;
    ofstream outld;

    Bubble D3;

    datld.open ("infile2.txt");
    if (!datld)
    {
        cout << "failure to open data.txt" << endl;
        system ("pause");
        return 1;
    }

    datld >> D3;

    while(datld)
    {
        cout << D3<< endl;
        datld >> D3;
    }

    system("pause");
    return 0;

    Bubblesort();
}


void Bubblesort()
{
    node* curr = head_ptr;
    int count = 0;
    while(curr!=NULL)
    {
        count++;
        curr = curr->NEXT;
    }
    for(int i = count ; i > 1 ; i-- )
    {
        node *temp, *swap1;
        swap1 = HEAD;
        for(int j = 0 ; j < count-1 ; j++ )
        {
            if(swap1->DATA > swap1->NEXT->DATA)
            {
                node *swap2 = swap1->NEXT;
                swap1->NEXT = swap2->NEXT;
                swap2->NEXT = swap1;
                if(swap1 == HEAD)
                {
                    HEAD = swap2;
                    swap1 = swap2;
                }
                else
                {
                    swap1 = swap2;
                    temp->NEXT = swap2;
                }
            }
            temp = swap1;
            swap1 = swap1->NEXT;
        }
    }
}


void list_clear(nodeType*& head_ptr)
//Library facilities used:cstdlib
{
    nodeType * removeptr;
    while(head_ptr!=NULL)
    {
        removeptr=head_ptr;
        head_ptr=head_ptr->link;
        delete removeptr;
    }
}

void list_copy(const nodeType* source_ptr, nodeType*&head_ptr, nodeType*&tail_ptr)
{
    nodeType* temp;// to allocate new nodes
    head_ptr=NULL;
    tail_ptr=NULL;

    if(source_ptr==NULL)
        return;

    head_ptr=new nodeType;
    head_ptr->link=NULL;
    head_ptr->info=source_ptr->info;
    tail_ptr=head_ptr;
    source_ptr=source_ptr->link;

    while(source_ptr!=NULL)
    {
        temp = new nodeType;
        temp->link=NULL;
        temp->info =source_ptr-> info;
        tail_ptr->link=temp;
        tail_ptr = tail_ptr->link;
        source_ptr = source_ptr->link;
    }
}

頭文件

#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;

class Bubble
{
private:
    int manynodes;
public:
    Bubble() { }

    void Bubblesort();

    friend ostream &operator<<( ostream &output, const Bubble &D )
    {
        output << D.manynodes;
        return output;
    }

    friend istream &operator>>( istream  &input, Bubble &D )
    {
        input >> D.manynodes;
        return input;
    }
};
  • 您的提取操作員看起來不錯。 我不知道它是否真的滿足您的需求,但這是另一個問題。
  • 您將函數Bubblesort()聲明兩次:首先在頭文件中作為void Bubblesort() ,然后在主文件中作為Bubblesort() (這至少應該給您一個警告,它被認為是int Bubblesort() ) . 您不能僅在返回值上重載函數,因此會出現錯誤。
  • 確實,您在多個地方使用了一個名為node的類型,但是您沒有在任何地方聲明或定義它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM