U E D R , A S I H C RSS

자료구족발보쌈/0708

Difference between r1.3 and the current

@@ -10,12 +10,12 @@
|| 이정재 || 고향 ||
|| 이원준 || 출석 ||
|| 조종현 || 출석 ||
|| 남헌 || 출석 ||
|| 남헌 || 숙면 ||

= 수업 =
== 진행 ==
1. 장소 : 6층 PC실
2. 시간 : 14시 30분~
2. 시간 : ~~함장님 지각으로 인하여~~ 14시 30분 ~ 17시

== 내용 ==
~~기억 속에서 사라진~~ '''기존 내용 복습'''
@@ -23,16 +23,138 @@
* 동적 메모리 할당
* 연결 리스트

'''수심 Nm. TITLE'''
*
'''수심 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;
}
}}}

= 숙제 =
1. 복습하기
2. 복습하기
3. 복습하기
1. 스택 복습하기

----

@@ -42,12 +164,429 @@

== 최지혁 ==

{{{
#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;
}
}}}
== 이정재 ==

== 이원준 ==

=== 연결 리스트 ===
{{{ #include <stdio.h>
 
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;
}
 
}
}}}
== 조종현 ==

== 남헌 ==



1. 참여자 명단


함장 장용운 11학번 지각
선원 천준현 15학번 결석
최지혁 출석
박인서 출석
이정재 고향
이원준 출석
조종현 출석
남헌 숙면

2. 수업

2.1. 진행

1. 장소 : 6층 PC실
2. 시간 : 함장님 지각으로 인하여 14시 30분 ~ 17시

2.2. 내용

기억 속에서 사라진 기존 내용 복습
  • 구조체
  • 동적 메모리 할당
  • 연결 리스트

수심 1000m. 스택
  • 스택 만들기
  • 문제해결

3. 코드

3.1. 예제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;
	}
}

3.2. 예제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.3. 예제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;
}

4. 숙제

1. 스택 복습하기




5. 숙제 제출

5.1. 천준현


5.2. 최지혁


#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;
}

5.3. 박인서

  • 연결 리스트

#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;
}

5.4. 이정재


5.5. 이원준


5.5.1. 연결 리스트


 #include <stdio.h>

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;
} 


5.5.2. 스택 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;
	}
}


5.5.3. 스택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;
	}

}

5.6. 조종현


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:30:37
Processing time 0.0481 sec