~cpp
// �호가 작성 ㅋㅋㅋㅋㅋㅋㅋㅋ
/*
int a; // ì„ ì–¸
a = 10; // ì •ì�˜
int b = 10; // ì„ ì–¸&ì •ì�˜
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _slist List;
typedef struct _slist{ // 구조체
int num;
List *next;
List *prev;
}List;
/*
struct _slist{
int num;
List *next;
List *prev;
};
typedef로 'strucrt _slist'를 List로 ì •ì�˜í•œë‹¤.
즉, "List *aaa" == "struct _slist *aaa"
*/
#include "ExList.h"
void ShowList(List *plist)
{
List *p; // 구조체 ì„ ì–¸.
p=plist;
while(p)
{
printf("%d\n",p->num);
p=p->next;
}
}
void main()
{
List *pList,*pNew,*pIns; // struct _slist *pList, *pNew, *pIns; 구조체3ê°œ ì„ ì–¸
pList=(List *)malloc(sizeof(List)); // mallocì�€ (List *)ê°€ 단위ì�¸ í�¬ê¸°ê°€ Listì�¸ 메모리 공간ì�„ ìƒ�ì„±í•˜ê³ ê·¸ 메모리 공간 첫 주소를 반환한다. ê·¸ 주소가 pListì—� 대입(ì •ì�˜)ë�œë‹¤.
pList->next=0; // � 구조체가 처� 부분� 있다는 것� 표시한다. 0으로.
pList->prev=0; // � 구조체가 � 부분� 있다는 것� 표시한다.
pList->num=1; // � 구조체 번호가 1번� 것� 표시한다.
printf("root�성시\n"); // *pList를 root로 한다.
ShowList(pList);
pNew=(List *)malloc(sizeof(List));
pList->next=pNew; // pList� 다� struct가 pNew�것� 표시. pList ---> pNew
/*
pList->next �것� (*pList).next와 ��하다.
*/
pNew->num=2; // �번째 struct� 것� 표시한다.
pNew->prev=pList; // pNewì�˜ ì�´ì „ structê°€ pListì�¸ê²ƒì�„ 표시. pList <--> pNew
pNew->next=0; // pNew� 다� struct가 없다는 것� 표시.
printf("pNew�성시\n");
ShowList(pList);
pIns=(List *)malloc(sizeof(List));
pIns->num=3; // 3번째 struct란 것� 표시.
pIns->prev=pList; // pIns를 pList와 pNew 사�� 집어 넣는다. (pList <-- pIns)
pIns->next=pNew; // pList <--> pNew, pIns ---> pNew
pList->next=pIns; // pList <--> pIns, pIns ---> pNew, pList <--- pNew (pList <--> pList, pList <--- pNew <--- pIns)
pNew->prev=pIns; // pList <--> pIns, pIns <--> pNew (pList <--> pIns <--> pNew)
printf("pIns삽입시\n");
ShowList(pList);
pList->next=pNew; // 알아서 해�해;;;
pNew->prev=pList;
free(pIns); // malloc함수로 만들어진 메모리중 쓸모 없는 메모리는 다시 반환ë�˜ì–´ì•¼í•œë‹¤. (ê·¸ë ‡ì§€ 않으면 메모리가 ê°€ë“�차서 컴퓨터가 멈춘다. ã…‹ã…‹)
printf("pIns ì‚ì œì‹œ\n");
ShowList(pList);
free(pNew);
free(pList);
}