#include <cstdlib>
#include <iostream>
using namespace std;
typedef int Data;
class CLNode
{
int element;
CLNode*next;
CLNode(int evalue,CLNode*nvalue){
element=evalue;
next=nvalue;
}
friend class CircularLinkedList;
};
class CircularLinkedList
{
CLNode *ListData;
public:
CircularLinkedList();
~CircularLinkedList();
bool IsEmpty();
void MakeEmpty();
void InsertItem(int item);
bool FindItem(int key);
void DeleteItem(int item);
void Print();
};
CircularLinkedList::CircularLinkedList()
{
ListData=NULL;
}
CircularLinkedList::~CircularLinkedList()
{
MakeEmpty();
}
void CircularLinkedList::MakeEmpty(){
CLNode*location=ListData;
while(ListData->next!=ListData){
location=ListData->next;
ListData->next=location->next;
delete location;
}
if (ListData->next==ListData){
location=ListData;
ListData=NULL;
delete location;
}
}
bool CircularLinkedList::IsEmpty(){
if (ListData==NULL)
return true;
return false;
}
void CircularLinkedList::InsertItem(int item){
if (IsEmpty()==true){
CLNode*location=new CLNode(item,location);
location->next=location;
ListData=location;
}
else{
CLNode*location=new CLNode(item,ListData->next);
ListData->next=location;
ListData=location;
}
}
void CircularLinkedList::Print(){
if (IsEmpty()==false){
CLNode*location=ListData;
cout<<"CircularLinkedList:";
if (location==ListData){
cout<<location->element<<"->";
location=location->next;
}
while (location!=ListData){
cout<<location->element<<"->";
location=location->next;
}
cout<<endl;
}else
cout<<"CircularLinkedList is empty"<<endl;
}
bool CircularLinkedList::FindItem (int key){
if (IsEmpty()==true){
CLNode*location=ListData;
while (location->element!=key && location->next==ListData)
{
location=location->next;
}
if (location->element==key)
return true;
return false;
}else
return false;
}
void CircularLinkedList::DeleteItem(int Item){
if (IsEmpty()==false){
CLNode*predLoc=ListData;
CLNode*location=ListData;
while (location->element!=Item && location->next!=ListData){
predLoc=location;
location=location->next;
}
if (location->next==ListData)
cout<<"ugugdsun element baikhgvi bna"<<endl;
else
if (location->element==Item){
if (location==ListData){
while(predLoc->next!=location)
predLoc=predLoc->next;
ListData=ListData->next;
}
predLoc->next=location->next;
delete location;
}
}else
cout<<"CircularLinkedList is empty"<<endl;
}
int main(int argc, char *argv[])
{
CircularLinkedList List;
List.InsertItem(10);
List.InsertItem(15);
List.InsertItem(5);
List.InsertItem(25);
List.Print();
bool f = List.IsEmpty();
cout<<f<<endl;
List.MakeEmpty();
List.Print();
List.InsertItem(2);
List.InsertItem(5);
List.InsertItem(10);
List.Print();
bool m = List.FindItem(5);
cout<<m<<endl;
List.DeleteItem(10);
List.Print();
system("PAUSE");
return EXIT_SUCCESS;
}
Wednesday, November 14, 2012
Thursday, November 8, 2012
SinglyLinkedList
#include <cstdlib>
#include <iostream>
using namespace std;
class SLNode{
int element;
SLNode *next;
SLNode(int evalue, SLNode *nvalue){
element=evalue; next=nvalue;
}
friend class SinglyLinkedList;
};
class SinglyLinkedList
{
SLNode *head;
SLNode *tail;
public:
SinglyLinkedList();
~SinglyLinkedList();
bool IsEmpty();
void MakeEmpty();
int First();
int Last();
void InsertFirst(int item);
void InsertLast(int item);
void InsertBefore(int key, int item);
void InsertAfter(int key, int item);
void InsertPosition(int pos, int item);
bool FindItem(int item);
void DeleteFirst();
void DeleteLast();
void DeleteBefore(int item);
void DeleteAfter(int item);
void DeletePosition(int pos);
void DeleteItem(int item);
int Count();
void Print();
};
SinglyLinkedList::SinglyLinkedList(){
head=tail=NULL;
}
SinglyLinkedList::~SinglyLinkedList(){
MakeEmpty();
}
void SinglyLinkedList::MakeEmpty()
{
SLNode *curr=NULL;
while(head !=NULL){
curr=head;
head=head->next;
delete curr;
}
tail=NULL;
}
bool SinglyLinkedList::IsEmpty(){
if(head==NULL && tail==NULL)
return true;
return false;
}
void SinglyLinkedList::InsertFirst(int item)
{
SLNode *curr=new SLNode(item, head);
if(IsEmpty()==true)
tail=curr;
head=curr;
}
void SinglyLinkedList::InsertLast(int item)
{
SLNode *curr=new SLNode(item, NULL);
if(IsEmpty()==true)
head=curr;
else
tail->next=curr;
tail=curr;
}
void SinglyLinkedList::InsertBefore(int key, int item){
SLNode *prevcurr=NULL;
SLNode *nextcurr=head;
if(IsEmpty()==false){
while(nextcurr->element!=key && nextcurr!=NULL){
prevcurr=nextcurr;
nextcurr=nextcurr->next;
}
if(nextcurr==NULL)
cout<<"ugugdsun element oldsongvi";
if(nextcurr->element==key) {
SLNode *curr=new SLNode(item, nextcurr);
prevcurr->next=curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::InsertAfter(int key, int item) {
SLNode *prevCurr=NULL;
SLNode *nextCurr=head;
if(IsEmpty()==false){
while(prevCurr->element!=key && nextCurr!=NULL){
prevCurr=nextCurr;
nextCurr=nextCurr->next;
}
if(nextCurr==NULL)
cout<<"ugugdsun element oldsongvi";
if(prevCurr->element==key){
SLNode *curr=new SLNode(item, nextCurr);
prevCurr->next=curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::InsertPosition(int pos, int item)
{
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *nextCurr=head;
int i=1;
while(i!=pos && nextCurr!=NULL){
prevCurr=nextCurr;
nextCurr=nextCurr->next;
i++;
}
if(nextCurr==NULL)
cout<<"bairlal buruu";
if(i==pos) {
SLNode *curr=new SLNode(item, nextCurr);
prevCurr->next=curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::Print(){
if(IsEmpty()==false){
SLNode *curr=head;
cout<<"SinglyLinkedList:";
while(curr!=NULL){
cout<<curr->element<<"->";
curr=curr->next;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
bool SinglyLinkedList::FindItem(int key){
if(IsEmpty()==false){
SLNode *curr=head;
while(curr!=NULL && curr->element!=key){
curr=curr->next;
}
if(curr->element==key) return true;
return false;
}
else
return false;
}
int SinglyLinkedList::Count(){
if(IsEmpty()==false){
SLNode *curr=head;
int counter=0;
while(curr!=NULL){
counter++;
curr=curr->next;
}
return counter;
}
else
return 0;
}
int SinglyLinkedList::First(){
if(IsEmpty()==true)
cout<<"SinglyLinkedList is empty";
return head->element;
}
int SinglyLinkedList::Last(){
if(tail==NULL)
cout<<"SinglyLinkedList is empty";
return tail->element;
}
void SinglyLinkedList::DeleteFirst(){
if(IsEmpty()==false){
SLNode *curr=head;
head=curr->next;
delete curr;
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteLast(){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=tail)
{
prevCurr=curr;
curr=curr->next;
}
if(curr==tail){
prevCurr->next=curr->next;
tail=prevCurr;
}
delete curr;
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteBefore(int key){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=NULL;
SLNode *nextCurr=head;
while(nextCurr!=NULL && nextCurr->element!=key)
{
prevCurr=curr;
curr=nextCurr;
nextCurr=nextCurr->next;
}
if(nextCurr==NULL)
cout<<"key element oldsongvi"<<endl;
if(nextCurr==head)
cout<<"key elementiin umnu element bhgvi bna"<<endl;
else if(nextCurr->element==key){
if(curr==head)
head=nextCurr;
else
prevCurr->next=nextCurr;
delete curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteAfter(int key){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=NULL && prevCurr->element!=key)
{
prevCurr=curr;
curr=curr->next;
}
if(curr==NULL)
cout<<"key element oldsongvi"<<endl;
if(prevCurr==tail)
cout<<"key elementiin hoino element bhgvvi bna"<<endl;
else if(prevCurr->element==key){
prevCurr->next=curr->next;
delete curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteItem(int key){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=NULL && curr->element!=key)
{
prevCurr=curr;
curr=curr->next;
}
if(curr==NULL)
cout<<"key element oldsongvi"<<endl;
if(curr==tail)
tail=prevCurr;
if(curr==head)
head=prevCurr;
if(curr->element==key){
prevCurr->next=curr->next;
delete curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeletePosition(int pos){
if(IsEmpty()==false){
int i=0;
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=NULL && i!=pos)
{
prevCurr=curr;
curr=curr->next;
i++;
}
if(curr==NULL)
cout<<"bairlal oldsongvi"<<endl;
if(i==pos)
if(curr==head)
head=curr->next;
else
prevCurr->next=curr->next;
if(curr==tail)
tail=prevCurr;
delete curr;
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
int main(int argc, char *argv[])
{
SinglyLinkedList list;
list.InsertFirst(21);
list.InsertFirst(24);
list.Print();
system("PAUSE");
return EXIT_SUCCESS;
}
#include <iostream>
using namespace std;
class SLNode{
int element;
SLNode *next;
SLNode(int evalue, SLNode *nvalue){
element=evalue; next=nvalue;
}
friend class SinglyLinkedList;
};
class SinglyLinkedList
{
SLNode *head;
SLNode *tail;
public:
SinglyLinkedList();
~SinglyLinkedList();
bool IsEmpty();
void MakeEmpty();
int First();
int Last();
void InsertFirst(int item);
void InsertLast(int item);
void InsertBefore(int key, int item);
void InsertAfter(int key, int item);
void InsertPosition(int pos, int item);
bool FindItem(int item);
void DeleteFirst();
void DeleteLast();
void DeleteBefore(int item);
void DeleteAfter(int item);
void DeletePosition(int pos);
void DeleteItem(int item);
int Count();
void Print();
};
SinglyLinkedList::SinglyLinkedList(){
head=tail=NULL;
}
SinglyLinkedList::~SinglyLinkedList(){
MakeEmpty();
}
void SinglyLinkedList::MakeEmpty()
{
SLNode *curr=NULL;
while(head !=NULL){
curr=head;
head=head->next;
delete curr;
}
tail=NULL;
}
bool SinglyLinkedList::IsEmpty(){
if(head==NULL && tail==NULL)
return true;
return false;
}
void SinglyLinkedList::InsertFirst(int item)
{
SLNode *curr=new SLNode(item, head);
if(IsEmpty()==true)
tail=curr;
head=curr;
}
void SinglyLinkedList::InsertLast(int item)
{
SLNode *curr=new SLNode(item, NULL);
if(IsEmpty()==true)
head=curr;
else
tail->next=curr;
tail=curr;
}
void SinglyLinkedList::InsertBefore(int key, int item){
SLNode *prevcurr=NULL;
SLNode *nextcurr=head;
if(IsEmpty()==false){
while(nextcurr->element!=key && nextcurr!=NULL){
prevcurr=nextcurr;
nextcurr=nextcurr->next;
}
if(nextcurr==NULL)
cout<<"ugugdsun element oldsongvi";
if(nextcurr->element==key) {
SLNode *curr=new SLNode(item, nextcurr);
prevcurr->next=curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::InsertAfter(int key, int item) {
SLNode *prevCurr=NULL;
SLNode *nextCurr=head;
if(IsEmpty()==false){
while(prevCurr->element!=key && nextCurr!=NULL){
prevCurr=nextCurr;
nextCurr=nextCurr->next;
}
if(nextCurr==NULL)
cout<<"ugugdsun element oldsongvi";
if(prevCurr->element==key){
SLNode *curr=new SLNode(item, nextCurr);
prevCurr->next=curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::InsertPosition(int pos, int item)
{
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *nextCurr=head;
int i=1;
while(i!=pos && nextCurr!=NULL){
prevCurr=nextCurr;
nextCurr=nextCurr->next;
i++;
}
if(nextCurr==NULL)
cout<<"bairlal buruu";
if(i==pos) {
SLNode *curr=new SLNode(item, nextCurr);
prevCurr->next=curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::Print(){
if(IsEmpty()==false){
SLNode *curr=head;
cout<<"SinglyLinkedList:";
while(curr!=NULL){
cout<<curr->element<<"->";
curr=curr->next;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
bool SinglyLinkedList::FindItem(int key){
if(IsEmpty()==false){
SLNode *curr=head;
while(curr!=NULL && curr->element!=key){
curr=curr->next;
}
if(curr->element==key) return true;
return false;
}
else
return false;
}
int SinglyLinkedList::Count(){
if(IsEmpty()==false){
SLNode *curr=head;
int counter=0;
while(curr!=NULL){
counter++;
curr=curr->next;
}
return counter;
}
else
return 0;
}
int SinglyLinkedList::First(){
if(IsEmpty()==true)
cout<<"SinglyLinkedList is empty";
return head->element;
}
int SinglyLinkedList::Last(){
if(tail==NULL)
cout<<"SinglyLinkedList is empty";
return tail->element;
}
void SinglyLinkedList::DeleteFirst(){
if(IsEmpty()==false){
SLNode *curr=head;
head=curr->next;
delete curr;
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteLast(){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=tail)
{
prevCurr=curr;
curr=curr->next;
}
if(curr==tail){
prevCurr->next=curr->next;
tail=prevCurr;
}
delete curr;
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteBefore(int key){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=NULL;
SLNode *nextCurr=head;
while(nextCurr!=NULL && nextCurr->element!=key)
{
prevCurr=curr;
curr=nextCurr;
nextCurr=nextCurr->next;
}
if(nextCurr==NULL)
cout<<"key element oldsongvi"<<endl;
if(nextCurr==head)
cout<<"key elementiin umnu element bhgvi bna"<<endl;
else if(nextCurr->element==key){
if(curr==head)
head=nextCurr;
else
prevCurr->next=nextCurr;
delete curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteAfter(int key){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=NULL && prevCurr->element!=key)
{
prevCurr=curr;
curr=curr->next;
}
if(curr==NULL)
cout<<"key element oldsongvi"<<endl;
if(prevCurr==tail)
cout<<"key elementiin hoino element bhgvvi bna"<<endl;
else if(prevCurr->element==key){
prevCurr->next=curr->next;
delete curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeleteItem(int key){
if(IsEmpty()==false){
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=NULL && curr->element!=key)
{
prevCurr=curr;
curr=curr->next;
}
if(curr==NULL)
cout<<"key element oldsongvi"<<endl;
if(curr==tail)
tail=prevCurr;
if(curr==head)
head=prevCurr;
if(curr->element==key){
prevCurr->next=curr->next;
delete curr;
}
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
void SinglyLinkedList::DeletePosition(int pos){
if(IsEmpty()==false){
int i=0;
SLNode *prevCurr=NULL;
SLNode *curr=head;
while(curr!=NULL && i!=pos)
{
prevCurr=curr;
curr=curr->next;
i++;
}
if(curr==NULL)
cout<<"bairlal oldsongvi"<<endl;
if(i==pos)
if(curr==head)
head=curr->next;
else
prevCurr->next=curr->next;
if(curr==tail)
tail=prevCurr;
delete curr;
}
else
cout<<"SinglyLinkedList is empty"<<endl;
}
int main(int argc, char *argv[])
{
SinglyLinkedList list;
list.InsertFirst(21);
list.InsertFirst(24);
list.Print();
system("PAUSE");
return EXIT_SUCCESS;
}
Subscribe to:
Posts (Atom)