디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

ㄱㄴㄴ님 코드 전체에요.. 한번 봐주실수 있으세요?

ㅁㄴㅇ(61.251) 2012.02.09 16:11:51
조회 49 추천 0 댓글 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define _ARRAY_LENGTH  100

typedef struct Slist
{
 char *pName;
 int Age;
 struct Slist *pNext;
} NODE;

int Count=0;

NODE *pHead=NULL;

int PrintMenu();
void AddNode();
void PrintNode();
void DeleteNode();
int SelectMenu();
void DeleteAllNode();
void SaveNode();
void LoadNode();

void main()
{
 while(1)
 {
  switch(SelectMenu())
  {
  case 1:
   AddNode();
   break;
  case 2:
   PrintNode();
   break;
  case 3:
   DeleteNode();
   break;
  case 4:
   DeleteAllNode();
   break;
  case 5:
   SaveNode();
   break;
  case 6:
   LoadNode();
   break;
  case 7:
   DeleteAllNode();
   return;
  }
 }
}

void PrintNode()
{
 if(pHead==NULL)
 {
  puts("노드가 없습니다");
  return;
 }
 NODE *pCurrentNode=pHead;
 while(1)
 {
  printf("이름 : %s\n", pCurrentNode->pName);
  printf("나이 : %d\n", pCurrentNode->Age);
  if((pCurrentNode->pNext)!=NULL) pCurrentNode=pCurrentNode->pNext;
  else break;
 }
}

void AddNode()
{
 NODE *pNewNode=(NODE*)malloc(sizeof(NODE));
 char NameInput[_ARRAY_LENGTH]={0};
 printf("이름 : ");
 scanf("%s", NameInput); getchar();
 int Length=strlen(NameInput)+1;                                     //

 pNewNode->pName=(char*)malloc(Length);                 // pNewNode->pName=(char*)malloc(strlen(NameInput)+1); 
 strcpy(pNewNode->pName, NameInput);
 printf("나이 : ");
 scanf("%d", &(pNewNode->Age)); getchar();
 pNewNode->pNext=NULL;

 if(pHead==NULL) pHead=pNewNode;
 else
 {
  NODE *pCurrentNode=pHead;

  while(pCurrentNode->pNext!=NULL)
   pCurrentNode=pCurrentNode->pNext;
  
  pCurrentNode->pNext=pNewNode;
 }
}

void DeleteNode()
{
 NODE *pCurrent=pHead;
 NODE *pPrevNode=NULL;
 printf("지우고 싶은 회원을 입력하세요. ");
 char NameInput[_ARRAY_LENGTH]={0};
 scanf("%s", NameInput); getchar();

 NODE **Prev_pNext=NULL;

 while(1)
 {
  if(!strcmp(NameInput, pCurrent->pName))
  {
   if(Prev_pNext==NULL)
   {
    pHead=pCurrent->pNext;
    free(pCurrent->pName);
    free(pCurrent);
    pCurrent=pHead;
   }
   else
   {
    *Prev_pNext=pCurrent->pNext;
    free(pCurrent->pName);
    free(pCurrent);
    pCurrent=*Prev_pNext;
   }
  }
  else
  {
   Prev_pNext=&pCurrent->pNext;
   pCurrent=pCurrent->pNext;
  }
  if(pCurrent==NULL) break;
 }
}


void LoadNode()
{
 DeleteAllNode();

 FILE *pFile=fopen(".\\node.dat", "rb");
 if(pFile==NULL)
 { 
  puts("파일 로드에 실패 하였습니다.");
  return;
 }
 
 char Temp[_ARRAY_LENGTH]={0};
 NODE *pCurrentNode;
 NODE **Prev_pNext=NULL;

 while(1)
 {
  pCurrentNode=(NODE*)malloc(sizeof(NODE));
  if(Prev_pNext!=NULL) *Prev_pNext=pCurrentNode;
  if(pHead==NULL) pHead=pCurrentNode;
  fread(Temp, sizeof(char), _ARRAY_LENGTH, pFile);
  int Length=strlen(Temp)+1;
  pCurrentNode->pName=(char*)malloc(Length);
  strcpy(pCurrentNode->pName, Temp);
  fread(&pCurrentNode->Age, sizeof(int), 1, pFile);
  fread(&pCurrentNode->pNext, sizeof(NODE*), 1, pFile);
  Prev_pNext=&pCurrentNode->pNext;

  if(pCurrentNode->pNext==NULL) break;
 }

 puts("로드 되었습니다.");
}

void DeleteAllNode()
{
 if(pHead==NULL) return;
 NODE *pCurrentNode=pHead;
 NODE *pTemp;
 while(1)
 {
  pTemp=pCurrentNode->pNext;
  free(pCurrentNode->pName);
  free(pCurrentNode);
  if((pTemp)!=NULL) pCurrentNode=pTemp;
  else break;
 }
 pHead=NULL;
}

void SaveNode()
{
 if(pHead==NULL) return;
 FILE *pFile=fopen(".\\node.dat", "wb");
 if(pFile==NULL)
 { 
  puts("파일 저장에 실패 하였습니다.");
  return;
 }

 char TempName[_ARRAY_LENGTH]={0};
 NODE *pCurrentNode=pHead;

 while(pCurrentNode!=NULL)
 {
  strcpy(TempName, pCurrentNode->pName);
  fwrite(TempName, sizeof(char), _ARRAY_LENGTH, pFile);
  fwrite(&pCurrentNode->Age, sizeof(int), 1, pFile);
  fwrite(&pCurrentNode->pNext, sizeof(NODE*), 1, pFile);
  pCurrentNode=pCurrentNode->pNext;
 }
 
 fclose(pFile);

 puts("저장 되었습니다.");
}

int SelectMenu()
{
 int Select;
 printf("======================\n");
 printf("<<싱글 링크드 리스트>>\n");
 printf("======================\n");
 printf("1. 노드 추가\n");
 printf("2. 노드 출력\n");
 printf("3. 노드 검색 삭제\n");
 printf("4. 노드 모두 삭제\n");
 printf("======================\n");
 printf("5. 노드 파일 저장\n");
 printf("6. 노드 파일 읽기\n");
 printf("======================\n");
 printf("7. 프로그램 종료\n");
 printf("======================\n");
 printf("-> ");
 scanf("%d", &Select); getchar();
 return Select;
}


실력이 모자라서 좀 난잡하네요;

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
303144 퇴갤한다 [2] y녀6디리(220.118) 12.02.14 40 0
303143 단층신경망을 짜 보아염... [1] 생각놀이갤로그로 이동합니다. 12.02.14 84 0
303141 웹 자동화 언어 어떤게 좋나요? 디씨클리너 제작 관련 ㅁㄴ(220.67) 12.02.14 73 0
303140 이번에 컴공들어가는 12학번 새내기입니다 [20] 아단님(211.207) 12.02.14 180 0
303139 누가 나 psp vita좀 사줘 [3] y녀6디리(220.118) 12.02.14 52 0
303138 쿄스케형 [1] SODMaster갤로그로 이동합니다. 12.02.14 36 0
303137 까놓고 말해서 리눅스 쓰는애들 컴퓨터좀 아는척 허세칠려고 쓰는거 아니냐. [16] ㅅㅅㅅ(58.77) 12.02.14 166 0
303136 연상한테 받은건 치지마라 [5] y녀6디리(220.118) 12.02.14 82 0
303135 ㅋㅋㅋㅋ 난 오늘 초콜릿 5개 받았지롱.. [4] 쿄스케갤로그로 이동합니다. 12.02.14 58 0
303134 작은 꿈이 잇엇다 y녀6디리(220.118) 12.02.14 43 0
303133 자바로 계산기 짜볼까 하는데요 ㅋ [2] SoliCode갤로그로 이동합니다. 12.02.14 68 0
303132 (파견)근무지 정보 공유 사이트 있나요? [1] Jai갤로그로 이동합니다. 12.02.14 53 0
303130 아 ㅠㅠ 도와주세염 ㅠㅠ [8] 코딩...?갤로그로 이동합니다. 12.02.14 62 0
303129 헐 나가려면 대체할 사람 구해놓고 나가라네;;;; [10] 쿄스케갤로그로 이동합니다. 12.02.14 155 0
303128 궁금한게 있다 [2] y녀6디리(220.118) 12.02.14 67 0
303127 형들아 .. 이거 하나만 쌍콤하게 질문!! [3] 코딩...?갤로그로 이동합니다. 12.02.14 62 0
303126 자바 개발자를 위한 XML 이 책 어때열? [8] 엔투갤로그로 이동합니다. 12.02.14 186 0
303124 형들 안녕 ? flex3 잘 아는 형들 나 좀 도와줄 수 있겟어? [1] 좋은아버지갤로그로 이동합니다. 12.02.14 53 0
303123 자바 이클립스 초보임.. [3] 케이갤로그로 이동합니다. 12.02.14 88 0
303122 트리 삭제할 때 왜 오른쪽 노드부터 삭제하는거야??? [7] 에이시아(203.90) 12.02.14 83 0
303121 내가 좀 똑똑해서 맘만 먹으면 자바 C 이런거 한달이면 다때는데 [4] ㅇㅇㅇ(58.77) 12.02.14 89 0
303119 자바 배우려는데 말이야.. [6] (58.75) 12.02.14 69 0
303118 횽들 C# 을 들을까 MFC 를 들을까 고민중입니다. [16] wow!!(180.69) 12.02.14 148 0
303117 형들은 외우면 다 기억남??? [15] 에이시아(203.90) 12.02.14 94 0
303116 넷북으로 이클립스 돌릴수 있음? [4] (58.75) 12.02.14 96 0
303115 C Fundamental ㅇㅇ갤로그로 이동합니다. 12.02.14 41 0
303114 어제 블랙회사 어쩌고 썼던 넘인데 [5] ㅇㅇ(118.36) 12.02.14 88 0
303113 너넨 지금 코딩을 하며 설렘을 느끼니? [2] (58.75) 12.02.14 88 0
303112 횽들, 드림스파크 이용하려는데...학교가 고자야...ㅠ [1] 쿠마코갤로그로 이동합니다. 12.02.14 84 0
303108 다들 퇴근 준비 하시면서 부모님께 선물을 준비 합시다. [1] 서현빠돌이갤로그로 이동합니다. 12.02.14 49 0
303107 [C++] derived class까지 friend 선언할 수 없을까 [3] 나다라마법사(1.237) 12.02.14 104 0
303106 퇴근준비들은 하면서 갤질들이냐? 이문동쮸쮸바갤로그로 이동합니다. 12.02.14 43 0
303105 형들 json 만큼 빠른거 있어요? [1] gle(114.70) 12.02.14 81 0
303104 웹과외 얼마받고 해야됨?? [4] 갤로그로 이동합니다. 12.02.14 95 0
303100 리눅스 질문.(횽들한텐 쉬운 거 일듯 ㅋ) [3] 에이시아(203.90) 12.02.14 83 0
303099 님들도 공학용계산기 사용함? [1] nerd(118.220) 12.02.14 57 0
303097 JMP 명령어 중에 궁금한게 있는데요 [11] 일광면(119.198) 12.02.14 96 0
303096 전기전자과가 하드웨어쪽 이죠? [1] 1(118.220) 12.02.14 115 0
303095 드디어.. 담배 끊은지.. [6] ☎v2.0™갤로그로 이동합니다. 12.02.14 90 0
303092 코딩 존나안되네... 3(121.169) 12.02.14 38 0
303090 여자한테 초콜릿 받았다.. [1] 일광면(119.198) 12.02.14 89 0
303086 자기 그룹이 소유권을 가진 파일에 대한 접근을 할 때도... [1] 에이시아(203.90) 12.02.14 39 0
303085 알바 글지우네 ㅡㅡ 열받는다(175.193) 12.02.14 32 0
303084 구구단을 못외워서 곱하기 게임 만들었다 [1] 1(118.220) 12.02.14 66 0
303081 회사에 여자가 50명 이상인데 초코렛은 4개 뿐이다 [2] ㄷㄷ(112.221) 12.02.14 66 0
303080 뜬금없지만 금딸 2주일 째, 미치겠다. [6] 싸이의홈스틸갤로그로 이동합니다. 12.02.14 143 0
303079 인제 인텔 책 공짜로 못 받나 보네요 ㅠ [1] 일광면(119.198) 12.02.14 88 0
303078 혼자 작업하는 형아들 자바개발 환경 어떤식임?? [4] 시불라미갤로그로 이동합니다. 12.02.14 98 0
303077 우분투 쓰는 횽아들 sudo 관련 [4] [성대아싸]갤로그로 이동합니다. 12.02.14 63 0
303076 이게 뭔말이야 리눅스 잘 하는 형들 제발 답변을..ㅜㅜ [9] 에이시아(203.90) 12.02.14 104 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2