回 帖 发 新 帖 刷新版面

主题:请问此程序用的是快速排序法吗?

请问此程序用的是快速排序法吗?

#include <malloc.h> 
#include <stdio.h> 

struct Node 

int data; 

struct Node* next; 
struct Node* prev; 
}; 

struct Node* create_list(int N) 

struct Node *head = NULL; 
struct Node *p = NULL, *q = NULL; 

int i = 0, data = 0; 

for (i = 0; i < N; i++) 

printf("请输入结点%d的值:", i+1); 
scanf("%d", &data); 
p = (struct Node*)malloc(sizeof(struct Node)); 
p->next = NULL; 
p->data = data; 
if (i == 0) 

head = p; 
p->prev = NULL; 

else 

p->prev = q; 
q->next = p; 

q = p; 


return head; 


void free_list(struct Node* head) 

struct Node* p = head; 
struct Node* q = NULL; 
while (p != NULL) 

q = p; 
p = p->next; 



void display_list(struct Node* head) 

struct Node* p = head; 
while (p != NULL) 

printf("%d ", p->data); 
p = p->next; 

printf("\n"); 


struct Node* get_max_node(struct Node* node) 

struct Node* max_node = node; 
while (node != NULL) 

if (node->data > max_node->data) 

max_node = node; 

node = node->next; 


return max_node; 


void swap_node(struct Node* node1, struct Node* node2) 

int temp; 

if (node1 == node2) 

return; 


temp = node1->data; 
node1->data = node2->data; 
node2->data = temp; 


void sort_list(struct Node* head) 

struct Node* max_node = NULL; 
struct Node* current = NULL; 

current = head; 
while (current != NULL) 

max_node = get_max_node(current); 
swap_node(current, max_node); 
current = current->next; 



int main() 

struct Node *head = NULL; 

int N = 0; 
printf("请输入双向链表的结点个数:"); 
scanf("%d", &N); 

head = create_list(N); 
display_list(head); 

sort_list(head); 
display_list(head); 

free_list(head); 

return 0; 
}

回复列表 (共1个回复)

沙发

显然不是,建议楼主去看看书

我来回复

您尚未登录,请登录后再回复。点此登录或注册