#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&¤t) { 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&¤t->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(); } |
ADB commands for Android
Android
What are C Tokens?
C/C++
Least Recently Used Paging Algorithm
Advanced programs
First In First Out Page Replacement Algorithm
Simple programs
Java Program to find the IP address of the Machine
Basic Programs
Palindrome checking using function overloading
Advanced programs
If u want embedded project pls contact me. (with report&program). Unaiskavo...
how to do the same code for char data? what vl be the required changes?...
Yet, there are grants that are made for equipment and training. A lot of people...
Saala kamina kuchh v samjha me na aaya...
It is indeed a matter of pride and pleasure when you find that your web page is ...