Professional Documents
Culture Documents
#include<iostream>
#include<fstream>
#include<string.h>
#include<stdlib.h>
using namespace std;
#define maxrecord 100
char hashtable[maxrecord][30],buffer[30];
char tombstone[]={"####"};
class student
{
public:
char key[5],name[20],sem[2];
void read();
void pack();
void retrieve(int addr, char *);
void unpack(char []);
void initialize();
void store(int);
}s;
void student::initialize()
{
for(int i=0;i<maxrecord;i++)
strcpy(hashtable[i],tombstone);
return;
}
strcat(buffer,"|");
return;
}
void student::unpack(char buffer[])
{
int k=0,i;
for(i=0;buffer[i]!='|';i++)
key[k++]=buffer[i];
key[k]='\0';
k=0;
for(++i;buffer[i]!='|';i++)
name[k++]=buffer[i];
name[k]='\0';
k=0;
for(++i;buffer[i]!='|';i++)
sem[k++]=buffer[i];
sem[k]='\0';
return;
}
void store(int addr)
{
int flag=0,i;
if (strcmp(hashtable[addr],tombstone)==0)
{
strcpy(hashtable[addr],buffer);
flag=1;
break;
s.unpack(hashtable[i]);
if(strcmp(key,k)==0)
{
found=1;
break;
}
else{
i++;
if(i==maxrecord)
i=0;
}}
while(i!=addr);
if(found==0)
cout<<"record does not exist";
else cout<<"record found"<<key<<name<<sem;
return;
}
int main(void)
{
int ch,addr;
char key[5];
s.initialize();
while(1)
{
MERGE
#include<stdlib.h>
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
class lists
{
public: char names[10][20];
int currele,size,over;
void readnames(int);
void merge();
int finish();
lists();
} l[8];
ifstream fin;
lists::lists()
{
over
=0;
currele=0;
}
void lists::readnames( int lst)
{
int i=0;
switch(lst)
{
case 0:
fin.open("list0.txt");
if(!fin)
{
cout<<"file can not be opened";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 1:
fin.open("list1.txt");
if(!fin)
{
cout<<"file can not beopened";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 2:
fin.open("list2.txt");
if(!fin)
{
cout<<"file can n";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 3:
fin.open("list3.txt");
if(!fin)
{
cout<<"no";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 4:
fin.open("list4.txt");
if(!fin)
{
cout<<"no";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 5:
fin.open("list5.txt");
if(!fin)
{
cout<<"no";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 6:
fin.open("list6.txt");
if(!fin)
{
cout<<"no";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
case 7:
fin.open("list7.txt");
if(!fin)
{
cout<<"no";
exit(0);
}
while(!fin.eof())
{
fin.getline(names[i++],20);
}
size=i-1;
fin.close();
break;
}}
int main(void)
{
lists l[8];
int smalllist=0,i,st;
char firstname[20],secondname[20];
for(int k=0;k<8;k++)
l[k].readnames(k);
smalllist = 0;
for(;;)
{
for(i=0;i<8;i++)
{
if(l[0].over==1&&l[1].over==1&&l[2].over==1&&l[3].over==1&&l[4].over==1&&l[5].ov
er==1&&l[6].over==1&&l[7].over==1)
exit(0);
if (strcmp(l[smalllist].names[l[smalllist].currele],
l[i
].names[l[i
].currele]) > 0) {
smalllist = i;
}
}
}
cout << l[smalllist].names[l[smalllist].currele] << endl;
l[smalllist].currele++;
if (l[smalllist].currele >= l[smalllist].size) {
l[smalllist].over = 1;
if (smalllist < 7)
smalllist++;
}
}
return 0;
}