11 - 데이터 구조링크 관련 조작
void sort_2(PNODE pHead);
전체 프로그램
05-node.c
#include <stdio.h> // print / scanf
#include <malloc.h> // malloc
#include <stdlib.h> // exit
#include <stdbool.h>// bool
typedef struct Node
{
int data; //
struct Node * pNext; //
} NODE, * PNODE;
// NODE <==> struct Node, PNODE<==>struct Node *
// ,
PNODE createList(void);
//
void traverseList(PNODE pHead);
//
bool isEmpty(PNODE pHead);
//
int listSize(PNODE pHead);
// , pos- ( 1), value-
bool insert(PNODE pHead, int pos, int value);
// , pValue-
bool delete(PNODE pHead, int pos, int * pValue);
// , ,
void sort(PNODE pHead);
// , ,
void sort_2(PNODE pHead);
int main(void)
{
PNODE pHead = NULL; // <==> struct Node * pHead;
//
pHead = createList();
//
if (isEmpty(pHead))
{
printf(" ? YES
");
}
else
{
printf(" ? NO
");
}
//
printf(" ? %d
", listSize(pHead));
//
traverseList(pHead);
//
/*
int pos, value;
printf("
");
printf("pos = ");
scanf("%d", &pos);
printf("value = ");
scanf("%d", &value);
insert(pHead, pos, value);
traverseList(pHead);
*/
//
/**/
int pos, value;
printf("
");
printf("pos = ");
scanf("%d", &pos);
delete(pHead, pos, &value);
printf(" value = %d
", value);
traverseList(pHead);
// -
sort(pHead);
// -
sort_2(pHead);
traverseList(pHead);
return 0;
}
PNODE createList(void)
{
int length; // ,
printf(" length = ");
scanf("%d", &length);
// .
PNODE pHead = (PNODE) malloc( sizeof(NODE) );
if ( NULL == pHead)
{
printf(" !!");
exit(-1);
}
//
PNODE pTail = pHead;
pTail->pNext = NULL;
//
int i;
int value; //
for (i = 0; i < length; ++i)
{
printf(" %2d : ", i+1);
scanf("%d", &value);
PNODE pNewNode = (PNODE) malloc(sizeof(NODE)); //
pNewNode->data = value; //
//
pTail->pNext = pNewNode;
pNewNode->pNext = NULL; //
pTail = pNewNode; // .
}
return pHead;
}
void traverseList(PNODE pHead)
{
PNODE pNode = pHead->pNext; //
printf(" : ");
while (NULL != pNode)
{
printf("%3d", pNode->data);
pNode = pNode->pNext; //
}
printf("
");
return;
}
bool isEmpty(PNODE pHead)
{
if ( NULL == pHead || NULL == pHead->pNext)
{
return true;
}
return false;
}
int listSize(PNODE pHead)
{
int count = 0; // ,
PNODE pNode = pHead->pNext; //
while (NULL != pNode)
{
++count;
pNode = pNode->pNext;
}
return count;
}
bool insert(PNODE pHead, int pos, int value)
{
if (pos < 1 || pos > listSize(pHead))
{
printf(" , 0 < pos < %d
", listSize(pHead)+1);
return false;
}
//
PNODE pNode = pHead; // , 0
int count = 0;
while (count < pos - 1)
{
pNode = pNode->pNext;
++count;
}
//
PNODE pNew = (PNODE) malloc( sizeof(NODE) );
pNew->data = value;
//
pNew->pNext = pNode->pNext;
pNode->pNext = pNew;
return true;
}
bool delete(PNODE pHead, int pos, int * pValue)
{
if (pos < 1 || pos > listSize(pHead))
{
printf(" , 0 < pos < %d
", listSize(pHead)+1);
return false;
}
int count = 0; //
PNODE pNode = pHead; //
//
for (; count < pos - 1; ++count)
{
pNode = pNode->pNext;
}
//
PNODE pTemp = pNode->pNext; // pTemp
pNode->pNext = pTemp->pNext;
//
*pValue = pTemp->data;
//
free(pTemp);
return true;
}
void sort(PNODE pHead)
{
int i, j;
int length = listSize(pHead);
int temp;
PNODE pNode = NULL;
for (i = 0; i < length - 1; ++i)
{
pNode = pHead->pNext; //
for (j = 0; j < length - 1 - i; ++j)
{
if (pNode->data > pNode->pNext->data)
{
temp = pNode->data;
pNode->data = pNode->pNext->data;
pNode->pNext->data = temp;
}
pNode = pNode->pNext;
}
}
return;
}
void sort_2(PNODE pHead)
{
int i, j;
int length = listSize(pHead);
int temp;
PNODE pLeft, pRight;
pLeft = pHead;
for (i =0; i < length -1; ++i)
{
pLeft = pLeft->pNext;
pRight = pLeft->pNext;
for (j = i + 1; j < length; ++j)
{
if (pLeft->data < pRight->data)
{
temp = pLeft->data;
pLeft->data = pRight->data;
pRight->data =temp;
}
pRight = pRight->pNext;
}
}
return;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.