티스토리 뷰

BackEnd/C

[29일차] 구조체와 연결리스트

JINSUKUKU 2021. 3. 14. 21:19

예제 1. 연결리스트

#include <stdio.h>

struct abc { // 구조체 정의
    int data;
    struct abc *next; // 자기 참조 구조체
};

int main() {
  struct abc x; 
  struct abc y;
  struct abc z;

  x.data = 10;
  y.data = 20;
  z.data = 30;

  x.next = &y;
  y.next = &z;
  z.next = NULL;    

  struct abc *p;

  for (p = &x; p; p=p->next){
    printf("%d\n", p->data);	
  }


  printf("구조체 y 삭제 후 \n");
  x.next = y.next;
  y.next = NULL;    

  for (p = &x; p; p=p->next){
    printf("%d\n", p->data);	
  }        

  return 0;
}

✔  for문의 초기식/조건식/증감식에 구조체 포인터 변수를 사용할 수 있다.

 

예제 2. typedef 예약어

#include <stdio.h>

int main() {
    struct man {
        int age;
        char name[10];
        struct man *next;
    };
    
    typedef struct man Man;
    
    Man a = {8, "짱구"};
    Man b = {6, "유리"};
    Man c = {7, "철수"};
    Man d = {7, "맹구"};    
    
    a.next = &b;
    b.next = &c;
    c.next = &d;
    d.next = NULL;

    Man *p;

    for (p = &a; p; p = p->next)
        printf("나이는 %d, 이름은 %s \n", p->age, p->name);

    return 0;
}

✔  typedef 예약어를 사용해 구조체 뿐만아니라 열거형, 공용체의 별칭도 만들 수 있다.

✔  선언과 동시에 typedef 예약어를 사용해 별칭을 만들 수 있으며, 이 경우 익명 구조체를 만들 수 있다.

 

 

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday