链表的插入排序

来源:互联网 发布:coc女王升级数据 编辑:程序博客网 时间:2024/04/28 09:50

一直都不知道怎么写链表的插入排序,之后在网上找了一个例子。理解了之后复制了过来。希望大家共同进步吧。

#include "stdafx.h"#include <iostream>#include<stdio.h>using namespace std;#define MAX 8struct  student {int num;student *next;};int* inserSort(int a[], int len);student* CreateList();student *InsertSort1(student *head);student *InsertSort(student *head);void sortlist(student * head);int main(void){student *pHead = CreateList();InsertSort(pHead);return 0;}//从大到小 (主要理解2处亮点)student *InsertSort1(student *head){student *pFirst = head->next;head->next = NULL;//亮点1student *p = NULL;student *q = NULL;student *t = NULL;while(pFirst != NULL){for(t = pFirst,q = head; (q != NULL && t->num < q->num); p = q, q++);//亮点2pFirst = pFirst->next;if(p == head){head = t;}else{p->next =t;}t->next = p;}return head;}student* CreateList(){student *pHead = NULL;student *pData = NULL;FILE *file = fopen("user.txt", "r");while(1){student d;if(fscanf(file,"%d",&d.num) == -1) break;student *pTemp = new student;pTemp->num = d.num;pTemp->next = NULL;if(pHead == NULL){pHead = pTemp;pData = pTemp;}else{pData->next = pTemp;pData = pTemp;}}return pHead;}int* inserSort(int a[], int len){int key;int j;for(int i=1; i<len; i++){key = a[i];for(j = i; j >0 && a[j-1] > key; j--){a[j] = a[j-1];}a[j]= key;}return a;}


0 0
原创粉丝点击