You are on page 1of 10

CKCSC20th

1 1~30030

1^1

2^1

3^1

2^2

5^1

2^1

3^1

30

2^1

3^1

31

31^1

32

2^5

33

3^1

11^1

34

2^1

17^1

35

5^1

7^1

2^1

3^1

5^1

7^1

11^1

30030 2^1

3^1

5^1

7^1

11^1

5^1

2310

13^1

30030 6 30030*6
int

2310
start[]end[]
start[2310] 2310

2^1 3^1 5^1

7^1 11^1 end[2310]

C++
#include<iostream>
#define MAX 30031
using namespace std;
struct data // data
{
int prime, index;
data *next; //next data next NULL
} *start[MAX], *end[MAX];
data* create() // data
{
data *p = new data; // p data
p -> next = NULL; // NULL()
p -> index = 0;
return p; // data
}
int main()
{
int i, j, t;
data *p;
for( i = 2 ; i < MAX ; i++ )
{
start[i] = create();
end[i] = start[i]; // end start end
t = i;
for( j = 2 ; j <= t ; j++ )
if( t%j==0 )
{
end[i] -> next = create(); // end next data
end[i] = end[i] -> next; // next end end
end[i] -> prime = j;
while( t%j==0 )

{
end[i] -> index++;
t /= j;
}
}
}
while( cin >> t )
{
if( t < 0 || t >= MAX )
cout << "error";
else if( t <= 1 )
cout << t;
else
{
// start start data
for( p = start[t]->next ; p != NULL ; p = p->next )
cout << p->prime << "^" << p->index << " ";
}
cout << endl;
}
return 0;
}
2

5
1

12

46

12

46

12

46

12

46

1. 5
1

2. 5 46
1

3. 5 12
1

4. 9
1

12

46

12

46

12

46

5. 6
1

6. 5>=3
1

start 1

12

46

NULL

46

NULL

1. start 5 6
start 1

12

2. 3 5 5 6
start 1

12

46

NULL

code

C++

#include<iostream>
using namespace std;
struct data
{
int num;
data *next;
} *start;
data *create()
{
data *p = new data;
p ->next = NULL;
return p;
}
int main()
{
int in;
data *p, *t;
start = create();
while( cin >> in )
{
//
for( p = start ; ; p = p->next )
{
if( p->next == NULL ) //
{
p->next = create();
p->next->num = in;
break;
}
else if( in <= p->next->num ) //
{
t = p->next; //
//
p->next = new data;

p->next->num = in;
//
p->next->next = t;
break;
}
}
for( p = start->next ; p != NULL ; p = p->next )
cout << p->num << ' ';
cout << endl;
}
return 0;
}

Linked List

(tree)

:D?

HeapSort

log 2 N
log 2 N

C++

#include<iostream>
using namespace std;
struct tree
{
int num;
bool empty; //
tree *left, *right;
} *begin;
tree* create() //
{
tree *p = new tree;
p -> empty = 1;
p -> left = NULL;
p -> right = NULL;
return p;
}
void input( tree* pos, int in )
{
if( pos->empty ) //
{
pos->empty = 0;
pos->num = in;
}
else if( in <= pos->num ) //
{
if( pos->left == NULL ) //
pos->left = create();
input( pos->left, in );
}
else //
{
if( pos->right == NULL )
pos->right = create();
input( pos->right, in );
}

}
bool search( tree* pos, int goal )
{
if( pos == NULL )
return 0;
if( pos->num == goal )
return 1;
else if( goal < pos->num )
return search( pos->left, goal );
else
return search( pos->right, goal );
}
void show( tree *pos )
{
if( pos == NULL ) return;
show( pos->left );
cout << pos->num << ' ';
show( pos->right );
}
int main()
{
int in;
char select;
begin = create(); //
cout << "\t\t\ta.input b.search c.show\n";
while( cin >> select )
{
switch(select)
{
case 'a':

cin >> in;


input( begin, in );
break;
case 'b':
cin >> in;
if( begin->empty || !search( begin, in ) ) //...
cout << "didn't find\n";
else
cout << "found\n";
break;
case 'c':
if( begin->empty )
cout << "empty\n";
else
{
show( begin );
cout << endl;
}
break;
default:
cout << "error\n";
break;
}
}
return 0;
}
ACM10226
ACM
11212253654861569910701
m(_ _)m

You might also like