데이터 구조의 단일 체인 표 정렬 (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. 절차 가 주의해 야 할 문 제 는 모두 주석 에서 명확 하 게 설명 한다.

좋은 웹페이지 즐겨찾기