// file: ll_stack_0.cc
//

// isip include files
//
#include "link_list.h"
#include "link_list_constants.h"

// method: push_cc
//
// arguments:
//  Link_node* node : (input) a link node to set at head of list
//
// return: a logical_1 to indicate success
//
// this method sets the specified node at the head of the linked list
// and connects the list accordingly
//
logical_1 Link_list::push_cc(Link_node* node_a) {

  // exit ungracefully if the node is null
  //
  if (node_a == (Link_node*)NULL) {
    return ISIP_FALSE;
  }

  // connect the head node to this
  //
  if (head_d != (Link_node*)NULL) {
    head_d->set_prev_cc(node_a);
  }
  node_a->set_next_cc(head_d);
  node_a->set_prev_cc((Link_node*)NULL);
  
  // set this node at head
  //
  head_d = node_a;
  
  // exit gracefully
  //
  return ISIP_TRUE;
}
