level 1
我叫fgh
楼主
附代码
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef struct Node
{
int data;
struct Node *next;
}LNode, *LinkList;
/*
//单链表插入排序算法
*/
void insert_sort_list(LinkList L);
void insert_sort_list(LinkList *L)
{
LinkList first;
LinkList t;
LinkList p;
LinkList q;
LinkList head;
/*
将链表拆为有序元素组成的链表和无序元素组成的链表
*/
head= (*L)->next;
first = head->next;
head->next = NULL;
while (first != NULL) {
for (t = first, q = head; ((q != NULL) && (q->data < t->data)); p = q, q = q->next);
first = first->next;
if (q == head)
{
(*L)->next = t;
t->next = head;
head = (*L)->next;
}
else
{
p->next = t;
t->next = q;
}
};
}
void traverse_list(LinkList L) {
LinkList p = L->next;
while(NULL != p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return;
}
void create_list(LinkList *L) {
int i;
int n;
int val;
*L = (LinkList)malloc(sizeof(LNode));
LinkList pTail = *L;
pTail->data = 0;
pTail->next = NULL;
printf("请输入您需要生成的结点个数:");
scanf("%d", &n);
printf("输入数据\n");
for(i = 0; i < n; i++) {
scanf("%d", &val);
LinkList pNew = (LinkList)malloc(sizeof(LNode));
pNew->data = val;
pNew->next = NULL;
pTail->next = pNew;
pTail = pNew;
}
}
main() {
LinkList La = NULL;
clock_t start, finish;
double duration;
create_list(&La);
printf("排序前元素:");
traverse_list(La);
start=clock();
insert_sort_list(&La);
finish=clock();
printf("排序后元素:");
traverse_list(La);
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
return 0;
}
2020年04月10日 03点04分
1
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef struct Node
{
int data;
struct Node *next;
}LNode, *LinkList;
/*
//单链表插入排序算法
*/
void insert_sort_list(LinkList L);
void insert_sort_list(LinkList *L)
{
LinkList first;
LinkList t;
LinkList p;
LinkList q;
LinkList head;
/*
将链表拆为有序元素组成的链表和无序元素组成的链表
*/
head= (*L)->next;
first = head->next;
head->next = NULL;
while (first != NULL) {
for (t = first, q = head; ((q != NULL) && (q->data < t->data)); p = q, q = q->next);
first = first->next;
if (q == head)
{
(*L)->next = t;
t->next = head;
head = (*L)->next;
}
else
{
p->next = t;
t->next = q;
}
};
}
void traverse_list(LinkList L) {
LinkList p = L->next;
while(NULL != p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return;
}
void create_list(LinkList *L) {
int i;
int n;
int val;
*L = (LinkList)malloc(sizeof(LNode));
LinkList pTail = *L;
pTail->data = 0;
pTail->next = NULL;
printf("请输入您需要生成的结点个数:");
scanf("%d", &n);
printf("输入数据\n");
for(i = 0; i < n; i++) {
scanf("%d", &val);
LinkList pNew = (LinkList)malloc(sizeof(LNode));
pNew->data = val;
pNew->next = NULL;
pTail->next = pNew;
pTail = pNew;
}
}
main() {
LinkList La = NULL;
clock_t start, finish;
double duration;
create_list(&La);
printf("排序前元素:");
traverse_list(La);
start=clock();
insert_sort_list(&La);
finish=clock();
printf("排序后元素:");
traverse_list(La);
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
return 0;
}
