<makefile>
CC=gcc
all:link_w2 struct_r
@echo "컴파일 시작"
link_w2: link_w2.c eha.h
$(CC) -o ex link_w2.c
struct_r: struct_r.c eha.h
$(CC) -o struct struct_r.c
clean:
@rm -rf link_w2 struct_r
hi:
@echo "컴파일 종료"
<eha.h>
#ifndef _EHA_H_
#define _EHA_H_
#include<stdio.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#define M_Number 0x77ff2288
#pragma pack(1)
typedef int CSize_t;
typedef int MNum_t;
typedef struct _EHA
{
int iNum;
char cName[10];
char cPhone[14];
struct _EHA *next; //4byte
} EHA; //32byte
typedef struct _EHAH
{
CSize_t iCnt;
MNum_t iMagic;
} EHAH;
#pragma pack()
#endif
<link_w2.c>
#include "eha.h"
void link_create(EHA **Head);
void link_create2(EHA **Head, EHA **Top);
void link_create3(EHA **Head);
EHA* link_create4(EHA *Head);
void link_free(EHA *Head);
void link_printf(EHA *Head);
int main()
{
EHA *Head; //struct _EHA *Head
//EHA *Top=NULL; //link_create2
Head = 0;
Head = link_create4(Head);
Head = link_create4(Head);
Head = link_create4(Head);
link_printf(Head);
link_free(Head);
return 0;
}
//1,2,3 -> 3,2,1
void link_create(EHA **Head)
{
EHA *Temp;
Temp = (EHA*)malloc(sizeof(EHA));
printf("번호를 입력하세요.\n");
scanf("%d", &Temp->iNum);
printf("이름을 입력하세요.\n");
scanf("%s", &Temp->cName);
printf("폰번호를 입력하세요.\n");
scanf("%s", &Temp->cPhone);
Temp->next = *Head;
*Head = Temp;
}
//1,2,3 -> 1,2,3
void link_create2(EHA **Head, EHA **Top)
{
EHA *Temp;
Temp = (EHA*)malloc(sizeof(EHA));
printf("번호를 입력하세요.\n");
scanf("%d", &Temp->iNum);
printf("이름을 입력하세요.\n");
scanf("%s", &Temp->cName);
printf("폰번호를 입력하세요.\n");
scanf("%s", &Temp->cPhone);
Temp->next = NULL;
if(*Head == NULL){
*Head = Temp;
}
else{
(*Top)->next = Temp;
}
*Top = Temp;
}
//1,2,3 -> 1,2,3 함수내에서 구현
void link_create3(EHA **Head)
{
EHA *Temp;
EHA *Top;
Temp = (EHA*)malloc(sizeof(EHA));
printf("번호를 입력하세요.\n");
scanf("%d", &Temp->iNum);
printf("이름을 입력하세요.\n");
scanf("%s", &Temp->cName);
printf("폰번호를 입력하세요.\n");
scanf("%s", &Temp->cPhone);
Temp->next = NULL;
if(*Head == NULL)
*Head = Temp;
else{
for(Top = *Head; Top->next != NULL; Top=Top->next);
Top->next = Temp;
}
}
EHA* link_create4(EHA *Head)
{
EHA *Temp;
EHA *Top;
Temp = (EHA*)malloc(sizeof(EHA));
printf("번호를 입력하세요.\n");
scanf("%d", &Temp->iNum);
printf("이름을 입력하세요.\n");
scanf("%s", &Temp->cName);
printf("폰번호를 입력하세요.\n");
scanf("%s", &Temp->cPhone);
Temp->next = NULL;
if(Head == NULL){
Head = Temp;
return Head;
}
Top=Head;
while(Top->next != 0)
Top = Top->next;
Top->next = Temp;
return Head;
}
void link_free(EHA *Head){
EHA *Temp;
for(Temp = Head; NULL != Head; Temp = Head)
{
Head = Head->next; //이동
free(Temp); // 제거
}
}
void link_printf(EHA *Head)
{
EHA *Temp;
for(Temp=Head; Temp != NULL; Temp = Temp->next){
printf("번호:%d\n", Temp->iNum);
printf("이름:%s\n", Temp->cName);
printf("폰번호:%s\n", Temp->cPhone);
}
}
'시스템 프로그래밍 > Linux' 카테고리의 다른 글
| 도서관리 연결리스트 (0) | 2009/05/15 |
|---|---|
| 연결리스트 (0) | 2009/05/12 |
| 유용한 vi 명령어 (0) | 2009/05/08 |
| Linux 압축명령 tar 및 ftp 명령어 (0) | 2009/05/08 |
| VMware 브릿지모드 네트웍 설정 (0) | 2009/04/29 |
| Vmware Workstation v5.5.1 (0) | 2009/04/27 |



Prev
