Если имеется ввиду стек
	Код:
	# 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х годичной давности  
 
						
					
Социальные закладки