将txt文件读入已排序的链表c ++

时间:2013-04-10 03:07:55

标签: c++ linked-list readfile sortedlist

刚开始了解链表,必须让OOP来阅读,排序和显示一些文件。

以下是txt文件的格式:

20  
john  
adam  
george  
.  
.  
.  

第一个数字是txt文件中包含的名称数,后面的每一行都有一个名称。

这是我的main.cpp

#include "ListClass.h"
#include <iostream>
#include <fstream>
#include <string>


using namespace std;


int main()
{
//declaring class
ListClass name;
string file;
    char holder[256];

cout<<"Please enter the data file to be read: "<<endl;
cin>>file;

//input the data file
ifstream myIn;
myIn.open(file.c_str());

//reading each line and perform functions
    myIn>>number;
    myIn.ignore(256,'\n');

while(myIn.peek()!=EOF)
{
           myIn.getline(holder, 256, '\n');
           nameRec.name=holder;

    readFile(nameRec.name);
            display();

}

myIn.close();

    return 0;
}

这是.h文件:

#include <string>
using namespace std;

#ifndef LISTCLASS_H
#define LISTCLASS_H

    struct record
{
    // name
    string name;
};
typedef record nameRec;

struct node
{
    nameRec data;
    node* next;
};
typedef node nodeType;
typedef node* nodeTypePtr;


class ListClass
{
public:

    ListClass();
    ListClass(const ListClass&L);
    ~ListClass();

    void readFile();
    void insert();
    void display();
    void search();
    void checkList();
    int listLength();

private:

    int number=0;

    nodeTypePtr head;

};
#endif

和我的实现.cpp

 #include "ListClass.h"

using namespace std;

//default constructor
ListClass::ListClass()
{
head=NULL;
}

ListClass::ListClass(const Class& L)
{
if(L.head==NULL)
    head=NULL;
else
{
    head=new node;
    assert(head!=NULL)
    head->item=L.head->item;
}
void ListClass::readFile(nameRec.name)
{
   nodeTypePtr prev, curr;
   nodeTypePtr newNode;
   newNode= new node;
   assert(newNode);
   newNode->nameRec.name;

   prev=head;
   curr=head;

   while ((curr!=NULL)&&(curr->cityRec.name))
 {
     prev= curr;
     curr= curr->next;
 }
   if (curr==head)
 {
     newNode->next=head;
     head=newNode;
 }
  else
 {
     newNode->next=curr;
     prev->next=newNode;
 }

void sortedListClass::display()
{
for (nodePtrType cur=head; cur!=NULL;cur=cur->next)
    cout<<cur->data.name<<endl;
}

我对编程很新,所以我可能做错了。我只想知道如何将文件读入链表,最好是排序链表,然后显示它。

0 个答案:

没有答案