Difference between r1.4 and the current
@@ -20,7 +20,7 @@
== 내용 ==
'''보충. 스택과 큐 연습'''
* 은행 관리 프로그램
== 예제1 ==
* 큐를 이용하여 은행에 저장된 사람이름, 계좌번호, 잔액을 입력받은 순서대로 나오게 작성하시오.
'''보충. 스택과 큐 연습'''
* 은행 관리 프로그램
~~탈주자들 안오면 잘라버리자~~
= 코드 === 예제1 ==
* 큐를 이용하여 은행에 저장된 사람이름, 계좌번호, 잔액을 입력받은 순서대로 나오게 작성하시오.
@@ -38,7 +38,7 @@
== 최지혁 ==
== 박인서 ==
#include <stdio.h>
#include <stdlib.h>
== 박인서 ==
=== 예제 1 ===
=== 예제1 ===
{{{#include <stdio.h>
#include <stdlib.h>
@@ -95,10 +95,189 @@
else pop(target->next);
}
}}}
== 이원준 ==
== 남헌 ==
}
}}}
=== 예제2 ===
{{{
#include <stdio.h>
#include <stdlib.h>
typedef struct bank{
int money;
int num;
char * name;
}bank;
typedef struct node{
bank val;
struct node* next;
}node;
void push(node *);
void pop(node *);
int main()
{
node head;
int i;
head.next=NULL;
for(i=0;i<10;i++) push(&head);
for(i=0;i<10;i++) pop(&head);
return 0;
}
void push(node * target)
{
node * newnode=(node *)malloc(sizeof(node));
node * temp=target->next;
int tmoney,tnum;
char * tname=(char *)malloc(sizeof(char)*100);
scanf("%s %d %d",tname,&tnum,&tmoney);
newnode->val.name=tname;
newnode->val.num=tnum;
newnode->val.money=tmoney;
target->next=newnode;
newnode->next=temp;
}
void pop(node * target)
{
node * kill = target->next;
printf("%s %d %d\n",target->next->val.name,target->next->val.num,target->next->val.money);
if(target->next==NULL) abort();
target->next=target->next->next;
free(kill);
}
}}}
== 이정재 ==== 이원준 ==
=== 큐로 짬 ===
(free따윈없다!)
* 그러다 정말로 자유가 없어짐 - [박인서]
{{{ #include<stdio.h>
#include<stdlib.h>
typedef struct node{
char v;
struct node* next;
}node;
typedef struct account{
node namehd;
node anumhd;
struct account* next;
}account;
void push(node*, char*);
account* acpush(account* hd);
void freeAll(node*);
int l = 10; //고객수
void main(){
account ac = { NULL };
account* tmp = ∾
account* pt = (account*)malloc(sizeof(account));
char a;
pt = ∾
for (int i = 0; i < l; i++)
{
printf("이름입력하3\n");
for (int j = 0; 1; j++){
a = fgetc(stdin);
if (a == '\n') break;
push(&(pt->namehd), &a);
}
printf("번호입력하3\n");
for (int j = 0; 1; j++){
a = fgetc(stdin);
if (a == '\n') break;
push(&(pt->anumhd), &a);
}
printf("\n");
pt = acpush(pt);
pt->anumhd.next = NULL;
pt->namehd.next = NULL;
pt->next = NULL;
}
pt = ∾
printf("----출력----\n");
for (int i = 0; i < l; i++){
printf("이름\n");
freeAll(&(pt->namehd));
printf("\n");
printf("계좌\n");
freeAll(&(pt->anumhd));
printf("\n");
printf("\n");
pt = pt->next;
}
}
void push(node* hd, char* val){
node* tmp = (node*)malloc(sizeof(node));
node* pt = (node*)malloc(sizeof(node));
pt = hd;
while (pt->next != NULL)
{
pt = pt->next;
}
tmp->next = NULL;
tmp->v = *val;
pt->next = tmp;
pt = pt->next;
}
account* acpush(account* ac){
account* tmp = (account*)malloc(sizeof(account));
tmp->next = NULL;
ac->next = tmp;
return ac->next;
}
void freeAll(node* hd){
node* ntp;
node* tmp = hd;
while (hd->next != NULL){
ntp = hd->next;
printf("%c", ntp->v);
ntp = ntp->next;
hd->next = ntp;
}
hd = tmp;
}
}}}
=== 스택으로 짠거 ===
그런거 없음
== 조종현 ==== 남헌 ==
5.3.1. 예제1 ¶
#include <stdio.h> #include <stdlib.h> typedef struct bank{ int money; int num; char * name; }bank; typedef struct node{ bank val; struct node* next; }node; void push(node *); void pop(node *); int main() { node head; int i; head.next=NULL; for(i=0;i<10;i++) push(&head); for(i=0;i<10;i++) pop(&head); return 0; } void push(node * target) { node * newnode=(node *)malloc(sizeof(node)); node * temp=target->next; int tmoney,tnum; char * tname=(char *)malloc(sizeof(char)*100); scanf("%s %d %d",tname,&tnum,&tmoney); newnode->val.name=tname; newnode->val.num=tnum; newnode->val.money=tmoney; target->next=newnode; newnode->next=temp; } void pop(node * target) { node * kill=(node *)malloc(sizeof(node)); if(target==NULL) abort(); if(target->next->next==NULL) { printf("%s %d %d\n",target->next->val.name,target->next->val.num,target->next->val.money); kill=target->next; target->next=NULL; free(kill); } else pop(target->next); }
5.3.2. 예제2 ¶
#include <stdio.h> #include <stdlib.h> typedef struct bank{ int money; int num; char * name; }bank; typedef struct node{ bank val; struct node* next; }node; void push(node *); void pop(node *); int main() { node head; int i; head.next=NULL; for(i=0;i<10;i++) push(&head); for(i=0;i<10;i++) pop(&head); return 0; } void push(node * target) { node * newnode=(node *)malloc(sizeof(node)); node * temp=target->next; int tmoney,tnum; char * tname=(char *)malloc(sizeof(char)*100); scanf("%s %d %d",tname,&tnum,&tmoney); newnode->val.name=tname; newnode->val.num=tnum; newnode->val.money=tmoney; target->next=newnode; newnode->next=temp; } void pop(node * target) { node * kill = target->next; printf("%s %d %d\n",target->next->val.name,target->next->val.num,target->next->val.money); if(target->next==NULL) abort(); target->next=target->next->next; free(kill); }
5.5.1. 큐로 짬 ¶
(free따윈없다!)
- 그러다 정말로 자유가 없어짐 - 박인서
#include<stdio.h> #include<stdlib.h> typedef struct node{ char v; struct node* next; }node; typedef struct account{ node namehd; node anumhd; struct account* next; }account; void push(node*, char*); account* acpush(account* hd); void freeAll(node*); int l = 10; //고객수 void main(){ account ac = { NULL }; account* tmp = ∾ account* pt = (account*)malloc(sizeof(account)); char a; pt = ∾ for (int i = 0; i < l; i++) { printf("이름입력하3\n"); for (int j = 0; 1; j++){ a = fgetc(stdin); if (a == '\n') break; push(&(pt->namehd), &a); } printf("번호입력하3\n"); for (int j = 0; 1; j++){ a = fgetc(stdin); if (a == '\n') break; push(&(pt->anumhd), &a); } printf("\n"); pt = acpush(pt); pt->anumhd.next = NULL; pt->namehd.next = NULL; pt->next = NULL; } pt = ∾ printf("----출력----\n"); for (int i = 0; i < l; i++){ printf("이름\n"); freeAll(&(pt->namehd)); printf("\n"); printf("계좌\n"); freeAll(&(pt->anumhd)); printf("\n"); printf("\n"); pt = pt->next; } } void push(node* hd, char* val){ node* tmp = (node*)malloc(sizeof(node)); node* pt = (node*)malloc(sizeof(node)); pt = hd; while (pt->next != NULL) { pt = pt->next; } tmp->next = NULL; tmp->v = *val; pt->next = tmp; pt = pt->next; } account* acpush(account* ac){ account* tmp = (account*)malloc(sizeof(account)); tmp->next = NULL; ac->next = tmp; return ac->next; } void freeAll(node* hd){ node* ntp; node* tmp = hd; while (hd->next != NULL){ ntp = hd->next; printf("%c", ntp->v); ntp = ntp->next; hd->next = ntp; } hd = tmp; }