언어/c언어

queue (수정할것 아직 완성되지 않음)

파아랑새 2016. 2. 17. 17:31
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int element;
typedef struct queue
{
 struct queue* linked;
 element data;
}queue, *queuePointer;
typedef struct node
{
 queuePointer head;
 queuePointer top;
 int dataCnt;
}node, *nodePointer;
//---------------------- function ----------------------
void queue_setting(nodePointer); //------------------>[1]
void enqueue_function(nodePointer);//---------------->[2]
void queue_printf(nodePointer);//-------------------->[3]
//------------------------------------------------------
int main(void) {
 nodePointer queue_start;
 queue_setting(&queue_start);
 return 0;
}
////////////////////////////////////////////////////////
void queue_setting(nodePointer queue)//-------------->[1]
{
 queue->head = (queuePointer)malloc(sizeof(queue));
 if (queue->head == NULL) {
  printf("malloc fail!!\n");
  return;//END
 }
 else//queue->head !=NULL
 {
  queue->dataCnt = 0;
  queue->head->data = 0;
  queue->head->linked = NULL;
  queue->top = queue->head;
 }
}
////////////////////////////////////////////////////////
void enqueue_function(nodePointer queue)//----------->[2]
{
 queuePointer new_Node = NULL;
 new_Node = (queuePointer)malloc(sizeof(queue));
 if (new_Node == NULL) {
  printf("malloc fail!!\n");
  return;//END
 }
 else {
 //new_Node != NULL
  // -------- < data setting > ----------
  new_Node->data = 0;
  new_Node->linked = NULL;
  queue->dataCnt += 1; //----------------> +1
  printf("new_Node data input >>>  ");
  scanf_s("%d", &new_Node->data);
  // ------------------------------------
  queue->top->linked = new_Node;
  queue->top = new_Node;
 }
}
////////////////////////////////////////////////////////
void queue_printf(nodePointer queue) {//------------->[3]
 int index;
 queuePointer index_node = queue->head->linked;
 if (queue->dataCnt == 0) {
  printf("queue is empty!!!\n");
  return;//END
 }
 else {//queue->dataCnt >=1
  for (index = 0; index < queue->dataCnt; index++) {
   printf("%d ", index_node->data);
   index_node = index_node->linked;
  } printf("\n");
 }
}