/*第二題是 用鏈表去對5個數字排序。*/
/*沒什麼特別的思想,就是一個創建鏈表並初始化,。然後來個冒泡排序即可*/
/*測試數據 :15 12 10 30 332 輸出結果: 10 12 15 30 332
333 222 111 10 2 2 10 111 222 333*/
/*程序:*************************愛X的味道*****************************/
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Node,*Linklist;
/*尾插法建立單鏈表並初始化*/
void CreateLinklist(Linklist *L)
{
Linklist p,q;
int array[5];
*L=(Linklist)malloc(sizeof(Node));
(*L)->data=0;
(*L)->next=NULL;
p=*L,q=*L;
printf("請輸入五個數,以空格隔開:\n");
scanf("%d %d %d %d %d",&array[0],&array[1],&array[2],&array[3],&array[4]);
for(int i=0;i<5;i++)
{
q=(Linklist)malloc(sizeof(Node));
q->data=array[i];
p->next=q;
q->next=NULL;
p=p->next;
}
p->next=NULL;
}
/*冒泡排序*/
void Sort(Linklist *L)
{
Linklist p,q;
if((NULL==(*L)->next) || (NULL== (*L)->next->next))
exit(0);
q=(*L)->next->next;
p=(*L)->next;
while(p->next!=NULL)
{
while(q!=NULL)
{
if((p->data)>(q->data))
{
p->data=(p->data)^(q->data);
q->data=(p->data)^(q->data);
p->data=(p->data)^(q->data);
}
q=q->next;
}
p=p->next;
q=p->next;
}
}
/*結果打印*/
void Display(Linklist L)
{
Linklist p=L->next;
printf("排好序後的結果如下: \n\n");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n\n");
}
int main()
{
Linklist L;
CreateLinklist(&L);
Sort(&L);
Display(L);
return 0;
}
06年華中科大機試第二題(用鏈表去對5個數字排序)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.