Untitled
unknown
plain_text
2 years ago
1.8 kB
6
Indexable
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
struct link_point{
char value;
int time=0;
int Rank;
struct link_point *leftptr=NULL;
struct link_point *rightptr=NULL;
};
typedef struct link_point* Linkpoint;
int main()
{
int Size=128; string filename; char wordlist; ifstream outfile; Linkpoint chars[Size];// a lot of link_point *
int counter=0;Linkpoint temp=new link_point;//thanks for GPT
for(int i=0;i<Size;i++)//assign value
{
chars[i] = new link_point; // allocate memory for each element thanks for GPT
chars[i]->value=static_cast<char>(i);
}
cout<<"start to input..."<<endl;
while(cin.get(wordlist))//count appear time
{
chars[static_cast<int>(wordlist)]->time++;
}
for(int i=0;i<Size;i++)//sorting by times, have runtime error
{
for(int x=i+1;x<Size;x++)
{
if((chars[i]->time)>(chars[x]->time))//change struct content not pointer position
{
*temp=*chars[i];
*chars[i]=*chars[x];
*chars[x]=*temp;
}
}
}
for(int i=0,x=0;i<Size;i++,x++)//assign rank... after Ex:chars[1]->value=91 chars[1]->rank=2 chars[1]->time=15
{
chars[i]->Rank=x+1;
do
{
if(i<Size-1&&chars[i]->Rank==chars[i+1]->Rank)
{
chars[i+1]->Rank=x+1;
counter++;i++;
}
}while(i<Size-1&&chars[i]->Rank==chars[i+1]->Rank);
x+=counter;counter=0;
}
for(int i=0;i<Size;i++)
{
cout<<chars[i]->value<<"\t"<<chars[i]->time<<endl;
}
return 0;
}
Editor is loading...
Leave a Comment