More actions
imported>박인서 No edit summary |
(Repair batch-0006 pages from live compare) |
||
| (13 intermediate revisions by 4 users not shown) | |||
| Line 4: | Line 4: | ||
= 참여자 명단 = | = 참여자 명단 = | ||
{| class="wikitable" | {| class="wikitable" style="width:100%;" | ||
|- | |- | ||
| 함장 | | 함장 | ||
| Line 38: | Line 38: | ||
== 진행 == | == 진행 == | ||
# 장소 : 6층 PC실 | # 장소 : 6층 PC실 | ||
# 시간 : 14시 30분~ | # 시간 : ~~함장님 지각으로 인하여~~ 14시 30분 ~ 17시 | ||
== 내용 == | == 내용 == | ||
| Line 88: | Line 88: | ||
hd = t; | hd = t; | ||
} | } | ||
} | |||
== 예제2 == | |||
#include <stdio.h> | |||
#include <malloc.h> | |||
#include <stdlib.h> | |||
typedef struct _node{ | |||
int value; | |||
struct _node* next; | |||
} node; | |||
void push(node**, int); | |||
int pop(node**); | |||
int main(void) { | |||
node* head = NULL; | |||
push(&head, 3); | |||
return 0; | |||
} | |||
void push(node** target, int val) { | |||
node* newnode = (node*)malloc(sizeof node); | |||
newnode->value = val; | |||
newnode->next = *target; | |||
*target = newnode; | |||
} | |||
int pop(node** target) { | |||
if (*target == NULL) abort(); | |||
int res = (*target)->value; | |||
node* kill = *target; | |||
*target = (*target)->next; | |||
free(kill); | |||
return res; | |||
} | |||
== 예제3 == | |||
#include <stdio.h> | |||
#include <malloc.h> | |||
#include <stdlib.h> | |||
typedef struct _node{ | |||
int value; | |||
struct _node* next; | |||
} node; | |||
void push(node*, int); | |||
int pop(node*); | |||
int main(void) { | |||
node head; | |||
head.next = NULL; | |||
push(&head, 3); | |||
printf("%d", pop(&head)); | |||
return 0; | |||
} | |||
void push(node* target, int val) { | |||
node* newnode = (node*)malloc(sizeof node); | |||
newnode->value = val; | |||
newnode->next = target->next; | |||
target->next = newnode; | |||
} | |||
int pop(node* target) { | |||
if (target == NULL) abort(); | |||
int res = target->next->value; | |||
node* kill = target->next; | |||
target->next = target->next->next; | |||
free(kill); | |||
return res; | |||
} | } | ||
= 숙제 = | = 숙제 = | ||
# | # 스택 복습하기 | ||
---- | ---- | ||
| Line 103: | Line 181: | ||
== 최지혁 == | == 최지혁 == | ||
#include<stdio.h> | |||
#include<malloc.h> | |||
//참조 자료형이 안에 있을 경우는 이렇게 위에 하나 더 써서 컴에게 미리 알려줌 | |||
typedef struct _node{ | |||
int value; | |||
struct _node *next; | |||
}node; | |||
void freeall(node*); | |||
int main(){ | |||
node*head; | |||
head = (node*)malloc(sizeof(node)); | |||
node* temp = head;//한번에 많이 생성,초기화 | |||
for (int i = 0; i < 50; i++) | |||
{ | |||
temp->next = (node*)malloc(sizeof node); | |||
temp->value = i; | |||
temp = temp->next; | |||
} | |||
temp->next = NULL; | |||
temp->value = 50; | |||
freeall(head); | |||
return 0; | |||
} | |||
void freeall(node* hd) | |||
{ | |||
node*t; | |||
while (hd != NULL) | |||
{ | |||
t = hd->next; | |||
printf("%d ", hd->value); | |||
free(hd); | |||
hd = t; | |||
} | |||
} | |||
#include<stdio.h> | |||
#include<stdlib.h> | |||
typedef struct _node | |||
{ | |||
int value; | |||
struct _node*next; | |||
} node; | |||
void push(node**, int); | |||
int pop(node*); | |||
int main() | |||
{ | |||
node*head = NULL; | |||
push(&head, 3); | |||
return 0; | |||
} | |||
void push(node** target, int val) | |||
{ | |||
node*newnode = (node*)malloc(sizeof node); | |||
newnode->value = val; | |||
newnode->next = *target; | |||
*target = newnode; | |||
} | |||
int pop(node** target, int val) | |||
{ | |||
if (*target == NULL) abort(); //abort는 프로젝트 강제 종료 | |||
int res = (*target)-> value; | |||
node*kill = *target; | |||
*target = (*target)->next; | |||
free(kill); | |||
return res; | |||
} | |||
== 박인서 == | == 박인서 == | ||
* 연결 리스트 | * 연결 리스트 | ||
| Line 145: | Line 306: | ||
return 0; | return 0; | ||
} | } | ||
* 스택 | * 스택 1 | ||
#include <stdio.h> | #include <stdio.h> | ||
#include <stdlib.h> | #include <stdlib.h> | ||
| Line 161: | Line 322: | ||
node * head=NULL; | node * head=NULL; | ||
push(&head,3); | push(&head,3); | ||
push(&head,4); | |||
printf("%d ",pop(&head)); | |||
printf("%d ",pop(&head)); | printf("%d ",pop(&head)); | ||
return 0; | return 0; | ||
| Line 178: | Line 341: | ||
if(*target==NULL) abort(); | if(*target==NULL) abort(); | ||
*target=(*target)->next; | *target=(*target)->next; | ||
free(kill); | |||
return res; | |||
} | |||
* 스택 2 | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
typedef struct node{ | |||
int val; | |||
struct node* next; | |||
}node; | |||
void push(node *, int); | |||
int pop(node *); | |||
int main() | |||
{ | |||
node head; | |||
head.next=NULL; | |||
push(&head,1); | |||
push(&head,2); | |||
push(&head,3); | |||
push(&head,4); | |||
printf("%d ",pop(&head)); | |||
printf("%d ",pop(&head)); | |||
printf("%d ",pop(&head)); | |||
printf("%d ",pop(&head)); | |||
return 0; | |||
} | |||
void push(node * target, int val) | |||
{ | |||
node * newnode=(node *)malloc(sizeof(node)); | |||
node * temp=target->next; | |||
newnode->val=val; | |||
target->next=newnode; | |||
newnode->next=temp; | |||
} | |||
int pop(node * target) | |||
{ | |||
int res=target->next->val; | |||
node * kill = target->next; | |||
if(target->next==NULL) abort(); | |||
target->next=target->next->next; | |||
free(kill); | free(kill); | ||
return res; | return res; | ||
| Line 185: | Line 392: | ||
== 이원준 == | == 이원준 == | ||
=== 연결 리스트 === | |||
typedef struct node{ | typedef struct node{ | ||
| Line 237: | Line 444: | ||
return i; | return i; | ||
} | } | ||
=== 스택 1 === | |||
#include <stdio.h> | |||
typedef struct node{ | |||
int v; | |||
struct node* next; | |||
}node; | |||
void push(node*, int); | |||
int pop(node *); | |||
void freeAll(node*); | |||
void main(){ | |||
node* head = NULL; | |||
push(&head, 3); | |||
push(&head, 4); | |||
push(&head, 9); | |||
printf("%d\n",pop(&head)); | |||
printf("%d\n", pop(&head)); | |||
printf("%d\n", pop(&head)); | |||
freeAll(head); | |||
} | |||
void push(node** tar, int val){ | |||
node* newn = (node*)malloc(sizeof(node)); | |||
newn->v = val; | |||
newn->next = *tar; | |||
*tar = newn; | |||
} | |||
int pop(node** tar){ | |||
if (*tar == NULL) abort(); | |||
int res = (*tar)->v; | |||
node* kill = *tar; | |||
*tar = (*tar)->next; | |||
free(kill); | |||
return res; | |||
} | |||
void freeAll(node* hd){ | |||
node* ntp; | |||
while (hd != NULL){ | |||
ntp = hd->next; | |||
printf("%d ", hd->v); | |||
free(hd); | |||
hd = ntp; | |||
} | |||
} | |||
=== 스택2 === | |||
#include<stdio.h> | |||
#include<stdlib.h> | |||
typedef struct node{ | |||
int v; | |||
struct node* next; | |||
}node; | |||
void push(node*, int); | |||
int pop(node*); | |||
void freeAll(node*); | |||
void main(){ | |||
node head; | |||
head.next = NULL; | |||
push(&head, 1); | |||
push(&head, 2); | |||
push(&head, 3); | |||
push(&head, 4); | |||
printf("%d\n",pop(&head)); | |||
printf("%d\n", pop(&head)); | |||
printf("---freeAll----\n"); | |||
freeAll(&head); | |||
printf("\n"); | |||
} | |||
void push(node* hd, int val){ | |||
node* tmp = (node*)malloc(sizeof(node)); | |||
tmp->next = hd->next; | |||
tmp->v = val; | |||
hd->next = tmp; | |||
} | |||
int pop(node* hd){ | |||
if (hd->next != NULL) printf("없는데 뽑다니!!! 프로그램끌거임\n"); abort; | |||
node* tmp = (node*)malloc(sizeof(node)); | |||
int val; | |||
tmp = hd->next; | |||
val = tmp->v; | |||
hd->next = tmp->next; | |||
free(tmp); | |||
return val; | |||
} | |||
void freeAll(node* hd){ | |||
node* ntp; | |||
while (hd->next != NULL){ | |||
ntp = hd->next; | |||
printf("%d ", ntp->v); | |||
ntp = ntp->next; | |||
free(hd->next); | |||
hd->next = ntp; | |||
} | |||
} | |||
== 조종현 == | == 조종현 == | ||
| Line 245: | Line 596: | ||
[[활동지도/2015]] | [[활동지도/2015]] | ||
[[자료구족발보쌈]] | [[자료구족발보쌈]] | ||
Latest revision as of 01:08, 27 March 2026
다시 부활
참여자 명단
| 함장 | 장용운 | 11학번 | 지각 |
| 선원 | 천준현 | 15학번 | 결석 |
| 최지혁 | 출석 | ||
| 박인서 | 출석 | ||
| 이정재 | 고향 | ||
| 이원준 | 출석 | ||
| 조종현 | 출석 | ||
| 남헌 | 숙면 |
수업
진행
- 장소 : 6층 PC실
- 시간 : ~~함장님 지각으로 인하여~~ 14시 30분 ~ 17시
내용
~~기억 속에서 사라진~~ 기존 내용 복습
- 구조체
- 동적 메모리 할당
- 연결 리스트
수심 1000m. 스택
- 스택 만들기
- 문제해결
코드
예제1
#include <stdio.h>
#include <malloc.h>
typedef struct _node{
int value;
struct _node * next;
} node;
void freeAll(node*);
int main(void) {
node* head;
head = (node*)malloc(sizeof(node));
node* temp = head;
for (int i = 0; i < 50; i++) {
temp->next = (node*)malloc(sizeof node);
temp->value = i;
temp = temp->next;
}
temp->next = NULL;
temp->value = 50;
freeAll(head);
return 0;
}
void freeAll(node* hd) {
node* t;
while (hd != NULL) {
t = hd->next;
printf("%d ", hd->value);
free(hd);
hd = t;
}
}
예제2
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct _node{
int value;
struct _node* next;
} node;
void push(node**, int);
int pop(node**);
int main(void) {
node* head = NULL;
push(&head, 3);
return 0;
}
void push(node** target, int val) {
node* newnode = (node*)malloc(sizeof node);
newnode->value = val;
newnode->next = *target;
*target = newnode;
}
int pop(node** target) {
if (*target == NULL) abort();
int res = (*target)->value;
node* kill = *target;
*target = (*target)->next;
free(kill);
return res;
}
예제3
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct _node{
int value;
struct _node* next;
} node;
void push(node*, int);
int pop(node*);
int main(void) {
node head;
head.next = NULL;
push(&head, 3);
printf("%d", pop(&head));
return 0;
}
void push(node* target, int val) {
node* newnode = (node*)malloc(sizeof node);
newnode->value = val;
newnode->next = target->next;
target->next = newnode;
}
int pop(node* target) {
if (target == NULL) abort();
int res = target->next->value;
node* kill = target->next;
target->next = target->next->next;
free(kill);
return res;
}
숙제
- 스택 복습하기
숙제 제출
천준현
최지혁
#include<stdio.h>
#include<malloc.h>
//참조 자료형이 안에 있을 경우는 이렇게 위에 하나 더 써서 컴에게 미리 알려줌
typedef struct _node{
int value;
struct _node *next;
}node;
void freeall(node*);
int main(){
node*head;
head = (node*)malloc(sizeof(node));
node* temp = head;//한번에 많이 생성,초기화
for (int i = 0; i < 50; i++)
{
temp->next = (node*)malloc(sizeof node);
temp->value = i;
temp = temp->next;
}
temp->next = NULL;
temp->value = 50;
freeall(head);
return 0;
}
void freeall(node* hd)
{
node*t;
while (hd != NULL)
{
t = hd->next;
printf("%d ", hd->value);
free(hd);
hd = t;
}
}
#include<stdio.h>
#include<stdlib.h>
typedef struct _node
{
int value;
struct _node*next;
} node;
void push(node**, int);
int pop(node*);
int main()
{
node*head = NULL;
push(&head, 3);
return 0;
}
void push(node** target, int val)
{
node*newnode = (node*)malloc(sizeof node);
newnode->value = val;
newnode->next = *target;
*target = newnode;
}
int pop(node** target, int val)
{
if (*target == NULL) abort(); //abort는 프로젝트 강제 종료
int res = (*target)-> value;
node*kill = *target;
*target = (*target)->next;
free(kill);
return res;
}
박인서
- 연결 리스트
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int value;
struct node * next;
}node;
void freeall(node * hd)
{
node * t=hd->next;
while(hd!=NULL)
{
t=hd->next;
printf("%d\n",hd->value);
free(hd);
hd=t;
}
}
int main()
{
node * head;
node * temp;
int i;
head = (node *)malloc(sizeof(node));
head->value=0;
head->next=(node *)malloc(sizeof(node));
temp=head;
for(i=0;i<50;i++)
{
temp->next=(node *)malloc(sizeof(node));
temp->value=i;
temp=temp->next;
}
temp->next=NULL;
temp->value=50;
freeall(head);
return 0;
}
- 스택 1
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int val;
struct node* next;
}node;
void push(node **, int);
int pop(node **);
int main()
{
node * head=NULL;
push(&head,3);
push(&head,4);
printf("%d ",pop(&head));
printf("%d ",pop(&head));
return 0;
}
void push(node ** target, int val)
{
node * newnode=(node *)malloc(sizeof(node));
newnode->val=val;
newnode->next=*target;
*target=newnode;
}
int pop(node ** target)
{
int res=(*target)->val;
node * kill = *target;
if(*target==NULL) abort();
*target=(*target)->next;
free(kill);
return res;
}
- 스택 2
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int val;
struct node* next;
}node;
void push(node *, int);
int pop(node *);
int main()
{
node head;
head.next=NULL;
push(&head,1);
push(&head,2);
push(&head,3);
push(&head,4);
printf("%d ",pop(&head));
printf("%d ",pop(&head));
printf("%d ",pop(&head));
printf("%d ",pop(&head));
return 0;
}
void push(node * target, int val)
{
node * newnode=(node *)malloc(sizeof(node));
node * temp=target->next;
newnode->val=val;
target->next=newnode;
newnode->next=temp;
}
int pop(node * target)
{
int res=target->next->val;
node * kill = target->next;
if(target->next==NULL) abort();
target->next=target->next->next;
free(kill);
return res;
}
이정재
이원준
=== 연결 리스트 ===
typedef struct node{
int v;
struct node* next;
}node;
void freeAll(node* hd); //값을 출력하면서 구조체를 free
int fNum(node* hd); //마지막 구조체의 값을 반환
void main(){
node* head;
head = (node*)malloc(sizeof(node));
node* temp = head;
for (int i = 0; i < 50; i++){
temp->next = (node*)malloc(sizeof(node));
temp->v = i;
temp = temp->next;
}
temp->next = NULL;
temp->v = 50;
printf("%d\n", fNum(head));
freeAll(head);
printf("\n");
}
void freeAll(node* hd){
node* ntp;
while (hd != NULL){
ntp = hd->next;
printf("%d ", hd->v);
free(hd);
hd = ntp;
}
}
int fNum(node* hd){
int i;
node* tp;
while (hd != NULL){
i = hd->v;
hd = hd->next;
}
return i;
}
=== 스택 1 ===
#include <stdio.h>
typedef struct node{
int v;
struct node* next;
}node;
void push(node*, int);
int pop(node *);
void freeAll(node*);
void main(){
node* head = NULL;
push(&head, 3);
push(&head, 4);
push(&head, 9);
printf("%d\n",pop(&head));
printf("%d\n", pop(&head));
printf("%d\n", pop(&head));
freeAll(head);
}
void push(node** tar, int val){
node* newn = (node*)malloc(sizeof(node));
newn->v = val;
newn->next = *tar;
*tar = newn;
}
int pop(node** tar){
if (*tar == NULL) abort();
int res = (*tar)->v;
node* kill = *tar;
*tar = (*tar)->next;
free(kill);
return res;
}
void freeAll(node* hd){
node* ntp;
while (hd != NULL){
ntp = hd->next;
printf("%d ", hd->v);
free(hd);
hd = ntp;
}
}
=== 스택2 ===
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int v;
struct node* next;
}node;
void push(node*, int);
int pop(node*);
void freeAll(node*);
void main(){
node head;
head.next = NULL;
push(&head, 1);
push(&head, 2);
push(&head, 3);
push(&head, 4);
printf("%d\n",pop(&head));
printf("%d\n", pop(&head));
printf("---freeAll----\n");
freeAll(&head);
printf("\n");
}
void push(node* hd, int val){
node* tmp = (node*)malloc(sizeof(node));
tmp->next = hd->next;
tmp->v = val;
hd->next = tmp;
}
int pop(node* hd){
if (hd->next != NULL) printf("없는데 뽑다니!!! 프로그램끌거임\n"); abort;
node* tmp = (node*)malloc(sizeof(node));
int val;
tmp = hd->next;
val = tmp->v;
hd->next = tmp->next;
free(tmp);
return val;
}
void freeAll(node* hd){
node* ntp;
while (hd->next != NULL){
ntp = hd->next;
printf("%d ", ntp->v);
ntp = ntp->next;
free(hd->next);
hd->next = ntp;
}
}