0% found this document useful (0 votes)
118 views7 pages

Program For Array Based Representation of Linear List Using Templates

The document describes a program that implements linear lists using templates in C++. It defines a LinearList class template to represent linear lists as arrays. The class contains methods to find, search, delete, insert elements and output the list. It also defines a main() function that uses a menu to demonstrate calling the LinearList methods.

Uploaded by

a.vidyanand
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
118 views7 pages

Program For Array Based Representation of Linear List Using Templates

The document describes a program that implements linear lists using templates in C++. It defines a LinearList class template to represent linear lists as arrays. The class contains methods to find, search, delete, insert elements and output the list. It also defines a main() function that uses a menu to demonstrate calling the LinearList methods.

Uploaded by

a.vidyanand
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Program for Array Based Representation of Linear List using templates

#include<iostream.h> #include<constream.h> template<class T> class LinearList { private: int length; int MaxSize; T *element; public: LinearList(int MaxLinearSize=10); ~LinearList(){delete[]element;} 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> LinearList<T>::LinearList(int MaxListSize) { MaxSize=MaxListSize; element=new T[MaxSize]; length=0; } template<class T> int LinearList<T>::Find(int k,T&x)const { if(k<1||k>length) return 0; x=element[k-1]; return 1; } template<class T> int LinearList<T>::Search(const T&x)const { for(int i=0;i<length;i++) if(element[i]==x) return ++i; return 0; } template<class T> void LinearList<T>::Delete(int k,T&x) { if(Find(k,x)) { for(int i=k;i<length;i++) element[i-1]=element[i]; length--; } else cout<<"out of bounds\n";

} template<class T> void LinearList<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--) element[i+1]=element[i]; element[k]=x; length++; } template<class T> void LinearList<T>::Output()const { if(isEmpty()) cout<<"list is empty\n"; else for(int i=0;i<length;i++) cout<<element[i]<<"\t"; } void menu() { cout<<"\n MENU\n" ; cout<<"-----------\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"; cout<<"-------------\n"; } void main() { int ch; int k,x,len,p; clrscr(); LinearList <int> obj; do { menu(); cout<<"enter choice\t"; cin>>ch; switch(ch) { case 1: len=obj.Length(); if(len==0) cout<<"List is empty\n"; else cout<<"length of linearlist 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"; break; } } while(ch>=1&&ch<=6); getch(); }

Program to implement linked representation of Linear list using templates


#include<iostream.h> #include<constream.h> #include<stdlib.h> template<class T> class ChainNode { friend Chain<T>; private: T data; ChainNode<T>*link; }; template<class T> class Chain { private: ChainNode<T>*first; public: Chain() { first=0; } ~Chain(); int IsEmpty()const; int Length()const; int Find(int k,T&x); int Search(const T&x); void Delete(int k,T&x); void Insert(int k,const T&x); void Output(); }; template<class T> Chain<T>::~Chain() { ChainNode<T>*next; while(first) { next=first->link; delete first; first=next; } } template<class T> int Chain<T>::Length()const { ChainNode<T>*current=first; int len=0; while(current) { current=current->link; len++; } return len; } template<class T>

int Chain<T>::Find(int k,T&x) //set x to the kth element in the chain //return 0 if no kth element, return 1 otherwise { if(k<1) return 0; ChainNode<T>*current=first; int index=1; //index of current while(index<k&&current) { current=current->link; index++; } if(current&&x==current->data) return 1; else return 0; //no kth element } template<class T> int Chain<T>::Search(const T&x) { ChainNode<T>*current=first; int index=1; //index of current while(current&&current->data!=x) { current=current->link; index++; } if(current) { return index; } else return 0; } template<class T> void Chain<T>::Delete(int k,T&x) { if(k<1||!first) cout<<"out of bounds\n"; //no kth element ChainNode<T>*p=first; if(k==1) //p is already at k first=first->link; //remove else { ChainNode<T>*q=first; for(int index=1;index<k-1&&q;index++) { q=q->link; } if(!q||!q->link) cout<<"the element doesnot exist\n"; p=q->link; q->link=p->link; //remove from linked list //free node p delete p; }

} template<class T> void Chain<T>::Insert(int k,const T&x) { if(k<0) cout<<"out of bounds\n"; //no kth element //p will be eventually to kth node ChainNode<T>*p=first; for(int index=1;index<k&&p;index++) p=p->link; if(k>0&&!p) cout<<"out of bounds\n"; //no kth element ChainNode<T>*y=new ChainNode<T>; y->data=x; if(k) { //insert after p y->link=p->link; p->link=y; } else { y->link=first; first=y; } } template<class T> void Chain<T>::Output() { ChainNode<T>*p=first; while(p) { cout<<p->data<<"\t"; p=p->link; } } 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(); Chain<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 linkedlist 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(); }

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy