데이터 구조의 단일 체인 표 정렬 (C 언어 구현)
18391 단어 데이터 구조
1. 실현 의 절차
1. 단일 체인 시트 생 성 2. 생 성 된 링크 정렬
구현 코드
#include
#include // malloc ,
#include // exit ,
typedef struct Node // ,
{
int data; //
struct Node * pNext; //
}NODE,*PNODE ; //NODE struct Node;PNODE struct Node *
// “;”
//
PNODE creat_list(void); // : ( ),
void traverse_list(PNODE); // : ,
bool is_empty(PNODE); // : ,
int length_list(PNODE); // : ,
void sort_list(PNODE); // : ,
int main (void)
{
PNODE pHead = NULL;
pHead = creat_list();
printf(" :");
traverse_list(pHead);
sort_list(pHead);
printf(" :");
traverse_list(pHead);
return 0;
}
//
/*
?
1、
2、
*/
PNODE creat_list(void)
{
int len; //
int val; //
int i; //
PNODE pHead = (PNODE)malloc(sizeof(NODE)); // , pHead
//
if(NULL == pHead)
{
printf(" , !!!
");
exit(-1);
}
printf(" :
len =");
scanf("%d",&len);
PNODE pTail = pHead; // 。
for(i=0;i<len;i++)
{
printf(" %d :",i+1);
scanf("%d",&val);
PNODE pNew = (PNODE) malloc(sizeof(NODE)); // , pNew
//
if(NULL == pNew)
{
printf(" , !!!
");
exit(-1);
}
pNew->data = val;
pNew->pNext = NULL;
pTail->pNext = pNew; //
pTail = pNew;
}
printf("
");
return pHead;
}
//
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext; // p, ,
while(p != NULL)
{
printf("%d ",p->data);
p = p->pNext;
}
printf("
");
return;
}
//
/*
,
C bool ,bool C++
.c, [Error] unknown type name 'bool'
.cpp,
C ,
*/
//
bool is_empty(PNODE pHead)
{
if(pHead->pNext == NULL)
return true; // , ,
else
return false;
}
// ( )
int length_list(PNODE pHead)
{
int length = 0;
PNODE p = pHead->pNext; // p, ,
while(p != NULL)
{
length++;
p = p->pNext;
}
return length;
}
// ( )
void sort_list(PNODE pHead)
{
int i,j,t;
int len = length_list(pHead);
PNODE p,q;
for(i=0,p = pHead->pNext; i<len-1; i++,p = p->pNext )
{
for(j = i+1,q = p->pNext;j<len;++j,q=q->pNext)
{
if(p->data>q->data) // a[i]>a[j]
{
t = p->data; // t=a[i];
p->data = q->data; // a[i]=a[j];
q->data = t; // a[j]=t;
}
}
}
return;
}
3. 절차 설명
1. 이것 은 제 가 두 번 째 로 CSDN 에서 블 로 그 를 쓰 는 것 이 고 데이터 구 조 를 처음 배 웠 습 니 다. 이 수업 은 일부 명사 에서 정확하게 말 하지 못 했 을 것 입 니 다. 하지만 저도 이 문 제 를 최대한 주의 하고 있 습 니 다. 우연히 이 블 로 그 를 본 선배 들 이 부족 한 점 을 지적 해 주 셔 서 감사 하 겠 습 니 다.2. 프로그램 은 dev C + + 에서 컴 파일 하고 실행 할 수 있 습 니 다.3. 절차 가 주의해 야 할 문 제 는 모두 주석 에서 명확 하 게 설명 한다.