C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 13.3.4. 리스트(List) 삭제
글번호: 249
작성자: 레드플러스
작성일: 2005/12/08 오후 4:22:56
조회수: 4012
/*
    리스트에서 데이터를 삭제하는 프로그램
*/
#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct Node
{
    char Name[20];        //이름
    char Phone[20];        //전화번호
    struct Node *NextNode;    //다음 노드를 가리키는 포인터
}*head;

struct Node *GetNode(void);
void Add(void);
void Print(void);
void Delete(char *);

void main(void)
{
    char key[32];

    Add();
    Print();

    printf("삭제할 데이터 : ");
    scanf("%s", key);
    Delete(key);
    printf("\n");
    Print();
}

void Delete(char *key)
{
    struct Node *current, *old;

    current = old = head;
    while(current != NULL)
    {
        if(strcmp(key, current->Name) == 0)
        {
            if(current == head)
            {
                head = current->NextNode;
            }
            else
            {
                old->NextNode = current->NextNode;
            }
            return;
        }
        old = current;
        current = current->NextNode;
    }
    printf("키 데이터를 찾을 수 없습니다.\n");
}

void Print(void)
{
    struct Node *current;

    printf("리스트에서 데이터 출력 : \n");
    current = head;
    while(current != NULL)
    {
        printf("%s %s\n", current->Name, current->Phone);
        current = current->NextNode;
    }
}

void Add(void)
{
    int i = 0;
    struct Node *current;

    printf("리스트에 데이터 추가 : \n");
    head = NULL;
    for(i = 0;i < 2;i++)
    {
        current = GetNode();
        scanf("%s %s", current->Name, current->Phone);
        current->NextNode = head;
        head = current;
    }
}

struct Node *GetNode(void)
{
    return (struct Node *)malloc(sizeof(struct Node));
}

/*
리스트에 데이터 추가 :
aaa 111
bbb 222
리스트에서 데이터 출력 :
bbb 222
aaa 111
삭제할 데이터 : aaa

리스트에서 데이터 출력 :
bbb 222
Press any key to continue
*/
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 14. 기타 - 레드플러스 2005-07-26 5179
  13. 데이터 구조(자료 구조) - 레드플러스 2005-07-26 5670
  13.1. 스택(Stack) - 레드플러스 2005-12-07 3990
  13.1.1. 스택(Stack) - 레드플러스 2005-12-07 4163
  스택 및 큐에 대한 설명한 엑셀 파일(강의용) 스택큐설명.xls(15 KB) 레드플러스 2007-01-23 4181
  13.2. 큐(Queue) - 레드플러스 2005-12-07 3922
  13.2.1. 큐(Queue) - 레드플러스 2005-12-07 4416
  13.2.1.1. 큐(Queue)에 대해 설명할 때 사용한 엑셀 파일 스택큐설명2.xls(15 KB) 레드플러스 2007-01-25 4028
  13.3. 리스트(List) - 레드플러스 2005-12-07 4134
  13.3.1. 리스트(List) : LIFO형 리스트 - 레드플러스 2005-12-07 4114
  13.3.1.1. 리스트(List) : LIFO형 리스트 설명시 사용했던 엑셀 파일 리스트(LIFO)설명.xls(13 KB) 레드플러스 2007-01-26 4000
  13.3.2. 리스트(List) : FIFO형 리스트 - 레드플러스 2005-12-07 4422
  13.3.2.1. 리스트(List) : FIFO형 리스트 설명시 사용했던 엑셀 파일 리스트(FIFO)설명.xls(13 KB) 레드플러스 2007-01-26 4021
  13.3.3. 리스트(List) 입력 - 레드플러스 2005-12-08 4160
현재글 13.3.4. 리스트(List) 삭제 - 레드플러스 2005-12-08 4012
  13.3.5. 이중 연결 리스트(Doubly Linked List) - 레드플러스 2005-12-08 7316
  13.3.6. 이중 연결 리스트 간단한 설명 : 이중연결리스트간단한설명.c - 레드플러스 2007-01-24 5096
  13.3.6. 이중 연결 리스트 간단한 설명시 사용했던 엑셀 파일 이중연결링크드리스트설명.xls(13 KB) 레드플러스 2007-01-24 4251
  13.4. 트리(Tree) - 레드플러스 2006-05-01 4000
  13.4.1. 이진 탐색 트리 - 레드플러스 2006-05-01 4319
  13.4.1.1. 이진 탐색 트리 설명시 사용했던 엑셀 파일 트리설명.xls(17 KB) 레드플러스 2007-01-25 4215
  13.5. 그래프(Graph) - 레드플러스 2006-05-02 3907
  13.5.1 그래프(Graph) - 레드플러스 2006-05-02 3931
  13.5.1.1 그래프(Graph) 설명시 사용했던 엑셀 파일 그래프설명.xls(15 KB) 레드플러스 2007-01-25 4118
  13.6. 해시테이블(Hashtable) - 레드플러스 2006-05-03 4112
  13.6.1 해시테이블(Hashtable) - 레드플러스 2006-05-03 5086
  데이터 구조 종합 예제 : 주소록 프로그램 종합예제_주소록프로그램.c(9 KB) 레드플러스 2006-11-02 4619
다음글 12. 메모리 관리 - 레드플러스 2005-07-26 5489
 
손님 사용자 Anonymous (손님)
로그인 Home