티스토리 뷰

공부 이야기

[C] 단일 링크드 리스트 구성

판다(panda) 2009. 1. 29. 00:00
// 단일 링크드 리스트 구성 Microsoft Visual Studio 2005
// LinkedList.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"

struct SList
{
    int data;
    SList *next;                      // 다음 링크 포인터
};
// 단일 링크드 리스트의 해드(head)
SList *head = NULL;

// data란 값으로 새로운 노트를 리스트에 추가한다.
void Insert(int data)                // head -> 추가위치(next tmp) -> NULL
{
    SList *tmp = new SList;
    tmp->data = data;
    tmp->next = head;
    head = tmp;
}
// 첫번째 노드를 삭제한다.
SList *RemoveFirst()
{
    SList *tmp = head;
    head = tmp->next;
    return tmp;
}
// data 값을 찾아서 삭제한다.
void Remove(int data)
{
    SList *tmp = head;
    SList *parent = NULL;
    while ( tmp )
    {
        if ( tmp->data == data )
        {
            if ( parent )
                parent->next = tmp->next;
            else
                head = tmp->next;
                delete tmp;
            break;
        }
        parent = tmp;
        tmp = tmp->next;
    }
}
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}