#include <stdio.h>
#include <malloc.h>
typedef struct node
{
struct node * pPrev;
struct node * pNext;
int num;
} NODE;
typedef struct list
{
NODE * pHead;
NODE * pTail;
int nodeCount;
} LIST;
void addTail(LIST*,NODE*);
void addHead(LIST*,NODE*);
//앞으로 끼워넣기
NODE *newNode();
void exitList(LIST*);
void disp(LIST*);
void main()
{
LIST list = {NULL,NULL,0};
NODE *pNew = NULL;
char isContinue;
do
{
printf_s("숫자입력 : ");
pNew = (NODE*)malloc(sizeof(NODE)); //메모리 동적할당
scanf_s("%d",&pNew->num);
pNew->pPrev=NULL;
pNew->pNext=NULL;
getchar();
printf("\n계속하시겠습니까?? y/n ");
scanf_s("%c",&isContinue,1);
addTail(&list,pNew);
} while (isContinue =='y');
disp(&list);
do
{
printf_s("숫자입력 : ");
pNew=(NODE*)malloc(sizeof(NODE));
scanf_s("%d",&pNew->num);
pNew->pPrev=NULL;
pNew->pNext=NULL;
getchar();
printf_s("\n계속? y/n ");
scanf_s("%c",&isContinue);
} while (isContinue=='y');
disp(&list);
exitList(&list);
}
void exitList(LIST * pL)
{
NODE * pCur=pL->pHead;
NODE * pDel=NULL;
while(pCur) {
pDel = pCur;
pCur=pCur->pNext;
if(pDel) free(pDel);
}
}
//NODE *newNode()
//{
// ///NODE *pNew=NULL;
// NODE pNew;
// pNew=(int*)malloc(sizeof(int));
//}
void addTail(LIST*pList ,NODE *pNode)
{
// 빈리스트 LIST에 노드 1개 추가하면
// 리스트 헤드,테일 노드는 방금 추가한 노드이고
// 리스트엔 그노드가 한개만 있으므로
// 리스트 nodeCount값은 1이 증가 되어야 한다.
if(pList->nodeCount==0)
{
pList->pTail=pNode;
pList->pHead=pNode;
}
else
{
pNode->pPrev = pList->pTail; //새로들어온 데이터의 처음주소에 pList의 pTail의 주소값을 넣고
pList->pTail->pNext = pNode; //pList의 pTail의 pNext는 지금 들어온 pNode의 주소값을 넣고
pList->pTail = pNode; // pList의 pTail
}
pList->nodeCount++;
return;
}
void disp(LIST * pL)
{
NODE * pCur=pL->pHead;
while(pCur)
{
printf("%d\n",pCur->num);
pCur=pCur->pNext;
}
}
이거이.. c언어 인데여...
숫자를 ㄱㅔ속 입력받아 메모리를 동적할당받아 쌓아놓았다가 디스플레이하는 링크드 리스트 인데요~
저 굵은 글씨체로 써 놓은 부분이 이해가 안갑니다.
친절하고 상냥하고 멋있는 오유형님누나동생친구들 ~
좀 가르쳐주세요~
머 이론적으로는 이해가 가는데 이해력이 딸려~ 저 굵은글씨중에 두번째는 더더더욱 이해가 안가네요~
누가 좀 디테일하게 설명해주실분 엄나요???