Yeom's
Yeom's Coding Note
Yeom's
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • 백준온라인 (94)
    • 운영체제 (14)
    • 프로그래머스 (0)
    • Go Language (40)
    • AWS (1)
    • 자료구조 (21)
    • Effective Java 3E (41)
    • JPA (1)
    • Tech Interview (33)
    • MySQL 8.0 (7)
    • CS 기술면접 (7)
    • Linux (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준 설탕 배달
  • https://mangkyu.tistory.com/94
  • UTM
  • Real MySQL 8.0
  • m1 linux
  • https://mangkyu.tistory.com/92
  • https://mangkyu.tistory.com/91
  • https://mangkyu.tistory.com/89
  • https://mangkyu.tistory.com/93
  • 출처 : 망나니 개발자
  • https://mangkyu.tistory.com/88
  • 교보dts
  • 망나니개발자
  • boj 2839
  • https://mangkyu.tistory.com/90
  • java
  • RealMySQL 8.0
  • maeil-mail
  • 망나니 개발자

최근 글

티스토리

hELLO · Designed By 정상우.
Yeom's

Yeom's Coding Note

리스트 - 1
자료구조

리스트 - 1

2023. 3. 19. 18:27
728x90
반응형

리스트

  • 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
  • 데이터 삽입, 삭제, 검색 등 필요한 작업을 가함
  • 스택과 큐는 리스트의 특수한 경우에 해당

추상 자료형 리스트 - 목록

 

Position Name Quantity
1 Beer 10
2 Gum 5
3 Apple 4
4 Potato 8
5 Onion 8
... ... ...

 

추상 자료형 리스트의 작업

Insert(Position, Data)

= 데이터를 해당 위치(Position)에 넣기

Delete(Position)

= 해당 위치(Position)의 데이터를 삭제

Retrieve(Position, Data)

= 해당 위치(Position)의 데이터를 Data 변수에 복사

Create( )

= 빈 리스트 만들기

Destroy( )

= 리스트 없애기

IsEmpty( )

= 빈 리스트인지 확인

Length( )

= 몇 개의 항목인지 계산

 

C배열에 의한 리스트

#define MAX 100                             최대 100개 데이터를 저장 

  typedef struct           

  { int Count;                                리스트 길이(데이터 개수)를 추적 

   int Data[MAX];                         리스트 데이터는 정수형 

  } listType;                                 리스트 타입은 구조체 

  void Insert(listType *Lptr, int Position, int Item); 해당 위치에 데이터를 삽입 

  void Delete(listType *Lptr, int Position);   해당 위치 데이터를 삭제 

  void Retrieve(listType *Lptr, int Position, int *ItemPtr); 

  찾은 데이터를 *ItemPtr에 넣음 

  void Init(listType *Lptr);                 초기화   

  bool IsEmpty(listType *Lptr);             비어있는지 확인  

  int Length(listType *Lptr);                리스트 내 데이터 개수 

 

연결 리스트 기초

typedef struct nodeRecord{

   int Data;                              노드 내부의 실제 데이터 또는 레코드

   struct nodeRecord* Next;  Next가 가리키는 것은 node 타입

} node;                                    구조체에 node라는 새로운 타입명 부여

typedef node* Nptr;              Nptr 타입이 가리키는 것은 node 타입

Nptr p, q;                                Nptr 타입 변수 p,q를 선언

노드 만들기, 이어 붙이기

p = (node*)malloc(sizeof(node));

p->Data = 33;

p->Next = (node*)malloc(sizeof(node));

p->Next->Data = 22;

p->Next->Next = NULL;

공간 반납

Nptr Head;

Head = (node*)malloc(sizeof(node));

Head->Data = 11;

Head->Next = NULL;

free Head;

Head = NULL;

디스플레이

Temp = Head;

While (Temp != NULL){

       printf("%d ", Temp->Data);

       Temp = Temp->Next;

}

 

간단한 삽입

p = (node*)malloc(sizeof(node));

p->Data = 8;

p->Next = Temp->Next;

Temp->Next = p;

 

간단한 삭제

p= Temp->Next;

Temp->Next = Temp->Next->Next  //Temp->Next = p->Next;

free p;

 

728x90
반응형

'자료구조' 카테고리의 다른 글

스택  (2) 2023.03.20
리스트 - 2  (0) 2023.03.19
재귀 호출  (0) 2023.03.19
포인터, 배열, 구조체  (0) 2023.03.18
추상 자료형  (0) 2023.03.18
    '자료구조' 카테고리의 다른 글
    • 스택
    • 리스트 - 2
    • 재귀 호출
    • 포인터, 배열, 구조체
    Yeom's
    Yeom's

    티스토리툴바