More actions
다시 부활
참여자 명단
| 함장 | 장용운 | 11학번 | 지각 |
| 선원 | 천준현 | 15학번 | 결석 |
| 최지혁 | 출석 | ||
| 박인서 | 출석 | ||
| 이정재 | 고향 | ||
| 이원준 | 출석 | ||
| 조종현 | 출석 | ||
| 남헌 | 숙면 |
수업
진행
- 장소 : 6층 PC실
- 시간 : 14시 30분~
내용
~~기억 속에서 사라진~~ 기존 내용 복습
- 구조체
- 동적 메모리 할당
- 연결 리스트
수심 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;
}
}
숙제
- 복습하기
- 복습하기
- 복습하기
숙제 제출
천준현
최지혁
박인서
- 연결 리스트
#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);
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,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));
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;
}