#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int key;
struct _node *left;
struct _node *right;
} node;
// Init
node *head;
void put(int);
void del(void);void init(void);
void prnq(void);
void main(void)
{
int mnu,key;
init();
key = 3;
put(key);
key = 4;
put(key);
key = 5;
put(key);
key = 6;
put(key);
key = 7;
put(key);
key = 8;
put(key);
while(1)
{
printf("Menu select : 1.put, 2.del, 3.print : \n");
scanf("%d", &mnu);
switch(mnu)
{
case 1:
printf("Input data : ");
scanf("%d",&key);
put(key);
break;
case 2:
del();
break;
case 3:
prnq();
break;
default:
puts("error");
}
}
}
void init(void)
{
head = (node*)malloc(sizeof(node));
head->right = head->left = head;
}
void put(int key)
{
node* new_node = (node*)malloc(sizeof(node));
if(new_node == NULL)
{
puts("memory full");
exit(1);
}
new_node->key = key;
new_node->left = head;
new_node->right = head->right;
new_node->right->left = new_node;
head->right = new_node;
}
void del(void)
{
node *del;
del = head->left; // 삭제 할것
if(head == del)
{
puts("memory empty");
exit(1);
}
else
{
del->left->right = del->right;
del->right->left = del->left;
free(del);
}
}
void prnq(void)
{
node *prn = head;
puts("=================== Queue list =======================");
while((prn = prn->left) != head)
if(prn->key) printf("%d, ",prn->key);
printf("\n");
puts("=================== Queue list =======================");
}
#include <stdlib.h>
typedef struct _node
{
int key;
struct _node *left;
struct _node *right;
} node;
// Init
node *head;
void put(int);
void del(void);void init(void);
void prnq(void);
void main(void)
{
int mnu,key;
init();
key = 3;
put(key);
key = 4;
put(key);
key = 5;
put(key);
key = 6;
put(key);
key = 7;
put(key);
key = 8;
put(key);
while(1)
{
printf("Menu select : 1.put, 2.del, 3.print : \n");
scanf("%d", &mnu);
switch(mnu)
{
case 1:
printf("Input data : ");
scanf("%d",&key);
put(key);
break;
case 2:
del();
break;
case 3:
prnq();
break;
default:
puts("error");
}
}
}
void init(void)
{
head = (node*)malloc(sizeof(node));
head->right = head->left = head;
}
void put(int key)
{
node* new_node = (node*)malloc(sizeof(node));
if(new_node == NULL)
{
puts("memory full");
exit(1);
}
new_node->key = key;
new_node->left = head;
new_node->right = head->right;
new_node->right->left = new_node;
head->right = new_node;
}
void del(void)
{
node *del;
del = head->left; // 삭제 할것
if(head == del)
{
puts("memory empty");
exit(1);
}
else
{
del->left->right = del->right;
del->right->left = del->left;
free(del);
}
}
void prnq(void)
{
node *prn = head;
puts("=================== Queue list =======================");
while((prn = prn->left) != head)
if(prn->key) printf("%d, ",prn->key);
printf("\n");
puts("=================== Queue list =======================");
}
'Native > C' 카테고리의 다른 글
open (0) | 2013.10.02 |
---|---|
Tree swap (0) | 2013.10.02 |
[과제] selective_sort 2 (0) | 2013.10.02 |
a,b 내용을 c에 16비트씩 넣기 (0) | 2013.10.02 |
[실습] double stack (0) | 2013.10.02 |