單鏈表排序問題、簡單易懂
阿新 • • 發佈:2018-10-31
http://zhidao.baidu.com/question/396662388.html#include <iostream> #include <ctime> #define ERROR 0; typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; //建立連結串列L2,順序插入 //輸入:1,2,3,4。輸出1,2,3,4 void CreateList_L2(LinkList &L,int n) { int i; L=(LinkList)malloc(sizeof(LNode)); L->data=n; L->next=NULL; LinkList p,q; //q=(LinkList)malloc(sizeof(LNode)); q=L; for(i=n;i>0;i--) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); q->next=p; p->next=NULL; q=p; }//for }//CreateList_L2 //按順序列印連結串列 void print(LinkList L) { LinkList p; p=L->next; while(p!=NULL) { printf("\t%d",p->data); p=p->next; }//while }//print //連結串列排序,非遞減順序排列 void Listsort_L(LinkList &L) { LinkList p,q; ElemType temp; for(p=L->next;p!=NULL;p=p->next) { for(q=p->next;q!=NULL;q=q->next) { if(p->data>q->data) { temp=p->data; p->data=q->data; q->data=temp; } } } } void main() { int n; LinkList L; printf("how many numbers you want to input in L:"); scanf("%d",&n); CreateList_L2(L,n); Listsort_L(L); printf("排序後的L是:"); print(L); }