137 lines
2.8 KiB
C++
137 lines
2.8 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++\Lab6\List.cpp
|
|
|
|
|
|
|
|
//## begin module. preserve=no
|
|
|
|
//## end module.
|
|
|
|
|
|
|
|
//## begin module.includes preserve=yes
|
|
|
|
//## end module.includes
|
|
|
|
|
|
|
|
// List
|
|
|
|
#include "H:\WebDocs\skola\Avancerad_C++\Lab6\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
|
|
|