#include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct node{ int data; struct node* next; }ListNode; extern int CSort(); extern ListNode* Get_Pre(); ListNode *root = NULL;// int main(int argc, char* argv[]){ int a[] = { 2, 4, 3, 59, 45, 32, 22}; ListNode *node = NULL; ListNode *tmp = NULL; int i = 0 ; root = (ListNode *)malloc(sizeof(ListNode)); node = root; for(i=0; i< sizeof a / sizeof(int); ++i){ //printf("a in %d ", a[i]); tmp = (ListNode *)malloc(sizeof(ListNode)); tmp->data = a[i]; node->next = tmp; node = tmp; } tmp->next = NULL; // CSort(); node = root->next; while(node){ printf("node->data %d ", node->data); node = node->next;// } node = root->next; //逆序; node = Get_Pre(node);// while(node){ printf("root->data %d ", node->data); node = node->next;// } return 0; // } int CSort(){ ListNode *p = root->next; ListNode *p_pre = p->next; int change_value = 0; assert(root); // while(p){ p_pre = p->next; while(p_pre){ if(p->data <= p_pre->data){ ; }else{ change_value = p->data; p->data = p_pre->data; p_pre->data = change_value; } p_pre = p_pre->next; } p = p->next; } } ListNode* Get_Pre(ListNode* head) { ListNode *pre = NULL; ListNode *next = NULL; while(head){ next = head->next; head->next = pre; pre = head; head = next; } return pre; }