Files
Avancerad_CPP/Lab4/list.cpp
2026-03-05 13:16:26 +01:00

137 lines
2.9 KiB
C++

//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: List; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.h"
//## begin module.additionalDeclarations preserve=yes
#include <stdio.h>
#include <iostream.h>
//## end module.additionalDeclarations
// Parameterized Class List
template <class T>
List<T>::List()
//## begin List::List%.hasinit preserve=no
: size(0)
//## end List::List%.hasinit
//## begin List::List%.initialization preserve=yes
//## end List::List%.initialization
{
//## begin List::List%.body preserve=yes
head=NULL;
//## end List::List%.body
}
template <class T>
List<T>::~List()
{
//## begin List::~List%.body preserve=yes
delete head;
//## end List::~List%.body
}
//## Other Operations (implementation)
template <class T>
void List<T>::add (int position, T item)
{
//## begin List::add%937398674.body preserve=yes
size++;
Node<T>* newPtr = new Node<T>(item);
if (position==0) {
newPtr->next=head;
head=newPtr;
}
else {
Node<T>* prev=head;
for (int i=0;i<position-1;i++)
prev=prev->next;
newPtr->next=prev->next;
prev->next=newPtr;
}
//## end List::add%937398674.body
}
template <class T>
void List<T>::del (int position)
{
//## begin List::del%937398675.body preserve=yes
Node<T>* trav=head;
Node<T>* cur;
size--;
if (position == 0) {
cur = head;
head = head -> next;
}
else {
for (int i=0 ; i<position-1 ; i++)
trav = trav -> next;
cur = trav -> next;
trav -> next = cur ->next;
}
cur -> next = NULL;
delete cur;
cur = NULL;
//## end List::del%937398675.body
}
template <class T>
bool List<T>::isEmpty ()
{
//## begin List::isEmpty%937398676.body preserve=yes
return (size==0);
//## end List::isEmpty%937398676.body
}
template <class T>
int List<T>::getSize ()
{
//## begin List::getSize%937398677.body preserve=yes
return size;
//## end List::getSize%937398677.body
}
template <class T>
T List<T>::getItem (int position)
{
//## begin List::getItem%937398678.body preserve=yes
Node<T>* cur=head;
for(int i=0 ; i<position ; i++)
cur=cur->next;
return (cur->data);
//## end List::getItem%937398678.body
}
// Additional Declarations
//## begin List.declarations preserve=yes
//## end List.declarations
//## begin module.epilog preserve=yes
//## end module.epilog