#include<iostream.h> #include<constream.h> template<class T> class IndirectList { private: int length; int MaxSize; T**table; public: IndirectList(int MaxLinearSize=10); ~IndirectList();//destructor int IsEmpty()const{return length==0;} int Length()const{return length;} int Find(int k,T&x)const; int Search(const T&x)const; void Delete(int k,T&x); void Insert(int k,const T&x); void Output()const; }; template<class T> IndirectList<T>::IndirectList(int MaxListSize) { MaxSize=MaxListSize; table=new T*[MaxSize]; length=0; } template<class T> IndirectList<T>::~IndirectList() { for(int i=0;i<length;i++) delete table[i]; delete[]table; } template<class T> int IndirectList<T>::Find(int k,T&x)const { if(k<1||k>length) return 0; //no kth element if(x==*table[k-1]) return 1; else return 0; } template<class T> int IndirectList<T>::Search(const T&x)const { for(int i=0;i<length;i++) if(*table[i]==x) return ++i; return 0; } template<class T> void IndirectList<T>::Delete(int k,T&x) { if(Find(k,x)) { for(int i=k;i<length;i++) table[i-1]=table[i]; length--; } else cout<<"out of bounds\n"; } template<class T> void IndirectList<T>::Insert(int k,const T&x) { if(k<0||k>length) cout<<"out of bounds\n"; if(length==MaxSize) cout<<"no memory\n"; for(int i=length-1;i>=k;i--) table[i+1]=table[i]; table[k]=new T; *table[k]=x; length++; } template<class T> void IndirectList<T>::Output()const { if(IsEmpty()) cout<<"list is empty\n"; else for(int i=0;i<length;i++) cout<<*table[i]<<"\t"; } void menu() { cout<<"\n MENU\n"; cout<<"1.Length\n"; cout<<"2.Find\n"; cout<<"3.Search\n"; cout<<"4.Delete\n"; cout<<"5.Insert\n"; cout<<"6.Output\n"; } void main() { int choice; int k,x,len,p; clrscr(); IndirectList<int>obj; do { menu(); cout<<"enter choice\n"; cin>>choice; switch(choice) { case 1: len=obj.Length(); if(len==0) cout<<"List is empty\n"; else cout<<"length of Indirectlist is "<<len<<endl; break; case 2: cout<<"enter k,x(position and value)\n"; cin>>k>>x; p=obj.Find(k,x); if(p==1) cout<<"found"<<endl; if(p==0) cout<<"not found"<<endl; break; case 3: cout<<"enter x(value)\n"; cin>>x; p=obj.Search(x); if(p) cout<<"searching is sucessful and found at "<<p<<endl; else cout<<"searching not sucessful"<<endl; break; case 4: cout<<"enter k,x(position and value)\n"; cin>>k>>x; obj.Delete(k,x); break; case 5: cout<<"enter k,x(index and value)\n"; cin>>k>>x; obj.Insert(k,x); break; case 6: cout<<"elements in the list are:\n\n"; obj.Output(); break; default: cout<<"invalid choice\n"; } } while(choice>=1&&choice<=6); getch(); } |
Description :
This is the one stop educational site for all Electronic and Computer students. If you want to learn something new then we are here to help. We work on Microcontroller projects, Basic Electronics, Digital electronics, Computer projects and also in basic c/c++ programs.
#Home #Sitemap #Resources #Terms of Use
Copyright©2012 electrofriends.com All Rights Reserved
Contact:[email protected]