Difference between revisions of "Q1sol the solution"

From CDOT Wiki
Jump to: navigation, search
Line 1: Line 1:
<nowiki>
+
[[code type="c++"]] 
<code>
+
//to write a linked list like structure, you must begin with a node.  Without the node,
 +
//you can't have a linked list.
 +
template <class T>
 +
struct Node{
 +
  T data_;
 +
  Node<T>* next_;
 +
};
 +
 
 +
template <class T>
 +
class Stack{
 +
  Node<T>* start_;
 +
public:
 +
  /*this constructor initializes the stack to an empty stack*/
 +
  Stack();
 +
  /*this function adds a piece of data of type T to the stack and returns
 +
    nothing*/
 +
  void push(T data);
 +
 
 +
  /*removes and returns a piece of data from the stack.  If the stack is
 +
    empty throw the string "empty stack"*/
 +
  T pop()
 +
 
 +
  /*returns true if empty, false otherwise*/
 +
  bool isempty();
 +
};
 +
template <class T>
 +
Stack<T>::Stack(){
 +
  start_=NULL;
 +
}
 +
 
 +
template <class T>
 +
void Stack<T>::push(T data){
 +
  Node<T>* nn;
 +
  nn=new Node<T>;
 +
  nn->data_=data;
 +
  nn->next_=start_;
 +
  start_=nn;
 +
}
 +
 
 +
template <class T>
 +
T Stack<T>::pop(){
 +
  T rc;
 +
  if(isempty()){
 +
    throw "Empty Stack";
 +
  }
 +
  else{  //this else is optional because if you throw an exception,rest
 +
    rc=start_->data_;
 +
    Node<T>* rm=start_;
 +
    start_=start_->next;
 +
    delete rm;
 +
  }
 +
  return rc;
 +
 
 +
}
 +
 
 +
template <class T>
 +
bool Stack<T>::isempty(){
 +
  bool rc=true;
 +
  if(start_){
 +
    rc=false;
 +
  }
 +
  return rc;
 +
}
 +
 
//to write a linked list like structure, you must begin with a node.  Without the node,
 
//to write a linked list like structure, you must begin with a node.  Without the node,
 
//you can't have a linked list.
 
//you can't have a linked list.
Line 65: Line 128:
 
}
 
}
  
</code></nowiki>
+
[[/code]]

Revision as of 17:13, 4 August 2010

code type="c++" //to write a linked list like structure, you must begin with a node. Without the node, //you can't have a linked list. template <class T> struct Node{

 T data_;
 Node<T>* next_;

};

template <class T> class Stack{

 Node<T>* start_;

public:

 /*this constructor initializes the stack to an empty stack*/
 Stack();
 /*this function adds a piece of data of type T to the stack and returns
   nothing*/
 void push(T data);
 /*removes and returns a piece of data from the stack.  If the stack is
   empty throw the string "empty stack"*/
 T pop()
 /*returns true if empty, false otherwise*/
 bool isempty();

}; template <class T> Stack<T>::Stack(){

 start_=NULL;

}

template <class T> void Stack<T>::push(T data){

 Node<T>* nn;
 nn=new Node<T>;
 nn->data_=data;
 nn->next_=start_;
 start_=nn;

}

template <class T> T Stack<T>::pop(){

 T rc;
 if(isempty()){
   throw "Empty Stack";
 }
 else{  //this else is optional because if you throw an exception,rest
   rc=start_->data_;
   Node<T>* rm=start_;
   start_=start_->next;
   delete rm;
 }
 return rc;

}

template <class T> bool Stack<T>::isempty(){

 bool rc=true;
 if(start_){
   rc=false;
 }
 return rc;

}

//to write a linked list like structure, you must begin with a node. Without the node, //you can't have a linked list. template <class T> struct Node{

 T data_;
 Node<T>* next_;

};

template <class T> class Stack{

 Node<T>* start_;

public:

 /*this constructor initializes the stack to an empty stack*/
 Stack();
 /*this function adds a piece of data of type T to the stack and returns
   nothing*/
 void push(T data);
 /*removes and returns a piece of data from the stack.  If the stack is
   empty throw the string "empty stack"*/
 T pop()
 /*returns true if empty, false otherwise*/
 bool isempty();

}; template <class T> Stack<T>::Stack(){

 start_=NULL;

}

template <class T> void Stack<T>::push(T data){

 Node<T>* nn;
 nn=new Node<T>;
 nn->data_=data;
 nn->next_=start_;
 start_=nn;

}

template <class T> T Stack<T>::pop(){

 T rc;
 if(isempty()){
   throw "Empty Stack";
 }
 else{  //this else is optional because if you throw an exception,rest
   rc=start_->data_;
   Node<T>* rm=start_;
   start_=start_->next;
   delete rm;
 }
 return rc;

}

template <class T> bool Stack<T>::isempty(){

 bool rc=true;
 if(start_){
   rc=false;
 }
 return rc;

}

/code