如何从两个文本文件txt 中提取数据存入链表并合并成一个没有重复的数据的表
代码如下:
#include <iostream>
#include <fstream>
using namespace std;
typedef struct _node
{
int data;
struct _node* next;
}LNode,*LinkList;
//初始化链表
void InitList(LinkList* head)
{
(*head) = new LNode;
(*head)->next = NULL;
}
//读取文件并创建链表
void CreateList(LinkList head,const char* filename)
{
ifstream infile(filename);
LinkList t,q;
if(!infile.is_open())
{
cout << filename <<"文件打开失败!"<<endl;
return ;
}
//读文件
while(!infile.eof())
{
q = new LNode;
q->next = NULL;
infile >> q->data;
//将q插入到链表中的合适位置,从小到大排序
t = head;
while(t->next!= NULL && t->next->data < q->data)
t = t->next;
q->next = t->next;
t->next = q;
}
infile.close();
}
//显示链表
void PrintList(LinkList head)
{
LinkList p = head->next;
while(p)
{
cout << p->data<<" ";
p = p->next;
}
cout << endl;
}
//合并链表,将h2合并到h1
void MergeList(LinkList h1,LinkList h2)
{
LinkList p1,p2,p3;
p1 = h1->next;
p2 = h2->next;
p3 = h1;
while(p1 && p2)
{
if(p1->data < p2->data)
{
p3->next = p1;
p3 = p1;
p1 = p1->next;
}else
{
p3->next = p2;
p3 = p2;
p2 = p2->next;
}
}
//将剩余部分合并
if(p1)
p3->next = p1;
if(p2)
p3->next = p2;
}
int main()
{
LinkList h1,h2;
InitList(&h1);
InitList(&h2);
CreateList(h1,"a.txt");
CreateList(h2,"b.txt");
cout <<"链表1:"<<endl;
PrintList(h1);
cout <<"链表2:"<<endl;
PrintList(h2);
cout <<"链表2合并到链表1:"<<endl;
MergeList(h1,h2);
PrintList(h1);
//释放内存
delete(h2); h2 = 0;
LinkList t;
while(h1)
{
t = h1->next;
delete h1;
h1 = t;
}
h1 = 0;
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!