#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int iData;
struct node *nLink;
} NODE;
NODE *insertNode(NODE *t);
NODE *deleteNode(NODE *t);
void printNode(NODE *t);
int main()
{
NODE *nodelink = NULL;
int selectItem;
while (1)
{
printf("1.데이터 삽입\n");
printf("2.데이터 삭제\n");
printf("3.데이터 출력\n");
printf("4.종료\n");
scanf_s("%d", &selectItem);
switch (selectItem)
{
case 1:
nodelink = insertNode(nodelink);
break;
case 2:
nodelink= deleteNode(nodelink);
break;
case 3:
printNode(nodelink);
break;
case 4:
return 0;
default:
printf("잘못눌렸습니다\n");
break;
}
}
return 0;
}
NODE *insertNode(NODE *t)
{
NODE *curNode = t;
NODE *newNode = NULL;
newNode = (NODE*)malloc(sizeof(NODE));
printf("데이터를 입력하시오 : ");
scanf_s("%d", &newNode->iData);
newNode->nLink = NULL;
if(t==NULL)
{
t = newNode;
}
else
{
while (curNode->nLink != NULL)
{
curNode = curNode->nLink;
}
curNode->nLink = newNode;
}
return t;
}
NODE *deleteNode(NODE *t)
{
NODE *curnode, *follnode;
int iFindData;
printf("삭제할 데이터를 입력하시오 : ");
scanf_s("%d", &iFindData);
curnode = t;
follnode = t;
while ((curnode != NULL) && (curnode->iData != iFindData))
{
follnode = curnode;
curnode = curnode->nLink;
}
if (curnode == NULL)
{
printf("삭제할 데이터가 없습니다.\n");
return t;
}
else if (curnode == t)
{
t = curnode->nLink;
}
else if (curnode->nLink == NULL)
{
follnode->nLink = NULL;
}
else
{
follnode->nLink = curnode->nLink;
}
free(curnode);
return t;
}
void printNode(NODE *t)
{
NODE * tempNode = t;
if (tempNode == NULL)
{
printf("출력할 데이터가 없습니다 \n");
return;
}
while (tempNode != NULL)
{
printf( "%d => ", tempNode->iData);
tempNode = tempNode->nLink;
}
printf("NULL\n");
}
'IT 전공지식 > 자료구조(Data Structure)' 카테고리의 다른 글
linked list qeueu (0) | 2014.11.14 |
---|---|
linked list 정렬입력 (0) | 2014.11.14 |
circular queue (0) | 2014.11.07 |
배열 스택 (0) | 2014.10.24 |
서브스트링 연산 (0) | 2014.10.23 |