Если имеется ввиду стек
Код:
# include < iostream.h >
# include < string.h >
//-----------------------------------------------------------------------------------------------
class Stack
{
private : char* a ;
Stack *NextPtr ;
public : Stack ( char* ) ;
~Stack () { delete a ; } ;
void addElement ( char* ) ;
void printElement ( int ) ;
void deleteElement ( int ) ;
} ;
//-----------------------------------------------------------------------------------------------
Stack *Top = 0 , *Tail = 0 ;
Stack :: Stack ( char* b )
{
a = new char [10] ;
strcpy ( a , b ) ;
}
//-----------------------------------------------------------------------------------------------
void Stack :: addElement ( char* b )
{
Stack *NewRecordPtr = new Stack ( b ) ;
NewRecordPtr -> NextPtr = Top ;
while( Tail -> NextPtr )
{
Tail = Tail -> NextPtr ;
}
Top = NewRecordPtr ;
}
//-----------------------------------------------------------------------------------------------
void Stack :: printElement ( int Number )
{
Stack *FindPtr = Top ;
while ( Number )
{
Number -- ;
if ( Number == 0 )
{
cout << FindPtr -> a << endl ;
}
FindPtr = FindPtr -> NextPtr ;
}
}
//-----------------------------------------------------------------------------------------------
void Stack :: deleteElement ( int Number )
{
Stack *DeletePtr = Top , *DeletePtrPrevious = 0 ;
while ( Number )
{
Number -- ;
if ( Number == 0 )
{
break ;
}
DeletePtrPrevious = DeletePtr ;
DeletePtr = DeletePtr -> NextPtr ;
}
if ( DeletePtr )
{
if ( DeletePtrPrevious )
{
DeletePtrPrevious -> NextPtr = DeletePtr -> NextPtr ;
}
else
{
Top = DeletePtr -> NextPtr ;
}
delete DeletePtr ;
delete DeletePtrPrevious ;
}
}
//-----------------------------------------------------------------------------------------------
void main ( void )
{
char *AnswerPtr = new char [3] , *NamePtr = new char [10] ;
cout << "Input name\n" ;
cin >> NamePtr ;
Top -> addElement ( NamePtr ) ;
while ( 1 )
{
cout << "Do you want to add an element ? \n" ;
cin >> AnswerPtr ;
if ( AnswerPtr [0] == 'y' )
{
cout << "Input name\n" ;
cin >> NamePtr ;
Top -> addElement ( NamePtr ) ;
}
if ( AnswerPtr [0] == 'n' )
{
break ;
}
}
int* NumberPtr = new int ;
while ( 1 )
{
cout << "Do you want to print an element ? \n" ;
cin >> AnswerPtr ;
if ( AnswerPtr [0] == 'y' )
{
cout << "Input number of element to print\n" ;
cin >> *NumberPtr ;
Top -> printElement ( *NumberPtr ) ;
}
if ( AnswerPtr [0] == 'n' )
{
break ;
}
}
delete [10]AnswerPtr ;
delete NumberPtr ;
cin.get () ;
}
или кольцевая очередь
Код:
# include < iostream.h >
# include < string.h >
int Menu ( void ) ;
void Print ( void ) ;
void Add ( void );
//-----------------------------------------------------------------------------------------------
class Queue
{
private : char* a ;
int Time ;
Queue *NextPtr ;
int CountFunc ( void ) ;
public : Queue ( char* ) ;
~Queue () { delete a ; } ;
void addElement ( char* ) ;
void printElement ( int ) ;
void printQueue ( void ) ;
void getQuantity ( void ) ;
void CPUTime ( void ) ;
} ;
//-----------------------------------------------------------------------------------------------
Queue *Head = 0 , *Tail = 0 ;
const int kvant = 7 ;
int counter = 0 ;
//-----------------------------------------------------------------------------------------------
inline Queue :: Queue ( char* b )
{
a = new char [10] ;
strcpy ( a , b ) ;
Time = counter * kvant ;
counter ++ ;
}
//-----------------------------------------------------------------------------------------------
void Queue :: addElement ( char* b )
{
Queue *NewRecordPtr = new Queue ( b ) ;
if ( Tail )
{
Tail -> NextPtr = NewRecordPtr ;
}
Tail = NewRecordPtr ;
if ( Head == 0 )
{
Head = Tail ;
}
Tail -> NextPtr = Head ;
}
//-----------------------------------------------------------------------------------------------
void Queue :: printElement ( int Number )
{
if ( Head )
{
Queue *FindPtr = Head ;
while ( Number )
{
Number -- ;
if ( Number == 0 )
{
cout << "Programm name - " << FindPtr -> a << endl ;
cout << "Time = " << FindPtr -> Time << endl ;
}
FindPtr = FindPtr -> NextPtr ;
}
}
}
//-----------------------------------------------------------------------------------------------
int Queue :: CountFunc ( void )
{
Queue *CountPtr = Head ;
if ( Head )
{
int N = 1 ;
while ( CountPtr -> NextPtr != Head )
{
N++ ;
CountPtr = CountPtr -> NextPtr ;
}
return N ;
}
else
return 0 ;
}
//-----------------------------------------------------------------------------------------------
void Queue :: printQueue ( void )
{
cout << "-----------------------------------------------\n" ;
cout << " Output of hole Queue\n" ;
Queue *FindPtr = Head ;
int Number = CountFunc () ;
while ( Number )
{
Number -- ;
cout << "Programm name - " << FindPtr -> a << endl ;
cout << "Time = " << FindPtr -> Time << endl ;
FindPtr = FindPtr -> NextPtr ;
}
cout << "-----------------------------------------------\n" ;
}
//-----------------------------------------------------------------------------------------------
void Queue :: getQuantity ( void )
{
cout << "The quantity is " << CountFunc () << endl ;
}
//-----------------------------------------------------------------------------------------------
void Queue :: CPUTime ( void )
{
int counter = 0 , T ;
cout <<"Input CPU time " << endl ;
cin >> T ;
Queue *FindPtr = Head ;
while ( T > 0 )
{
T = T - 7 ;
cout << "Programm name - " << FindPtr -> a << endl ;
cout << "Time = " << FindPtr -> Time << endl ;
if ( FindPtr -> NextPtr == Head )
{ break ;}
FindPtr = FindPtr -> NextPtr ;
}
}
//-----------------------------------------------------------------------------------------------
void main ( void )
{
int choise ;
while ( 1 )
{
choise = Menu () ;
if ( choise == 1 )
{
break ;
}
}
cin.get () ;
}
//-----------------------------------------------------------------------------------------------
int Menu ( void )
{
int choise = 0 ;
cout << "Press 1 to add element , 2 to print needed element,\n"
<< "3 to output hole queue , 4 to output quantity of elements,\n"
<< "5 to ouput elements when CPU time is over , 6 to exit\n";
cin >> choise ;
switch ( choise )
{
case 1 :
Add () ;
return 0 ;
break ;
case 2 :
Print () ;
return 0 ;
break ;
case 3 :
Tail -> printQueue () ;
return 0 ;
break ;
case 4 :
Tail -> getQuantity () ;
return 0 ;
break ;
case 5 :
Head ->CPUTime () ;
return 0 ;
break ;
case 6 :
return 1 ;
break ;
default :
return 0 ;
break ;
}
}
//-----------------------------------------------------------------------------------------------
void Add ( void )
{
char *NamePtr = new char [10] ;
cout << "Input name\n" ;
cin >> NamePtr ;
Tail -> addElement ( NamePtr ) ;
}
//-----------------------------------------------------------------------------------------------
void Print ( void )
{
int* NumberPtr = new int ;
cout << "Input number of element to print\n" ;
cin >> *NumberPtr ;
Head -> printElement ( *NumberPtr ) ;
}
//-----------------------------------------------------------------------------------------------
Курсовая работа 2х годичной давности
Социальные закладки