日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊打開鏈接

數據結構實驗之鏈表六:有序鏈表的建立

Time Limit:?1000MS?Memory Limit:?65536KB Submit?Statistic?Discuss

Problem Description

輸入N個無序的整數,建立一個有序鏈表,鏈表中的結點按照數值非降序排列,輸出該有序鏈表。

Input

第一行輸入整數個數N;
第二行輸入N個無序的整數。

Output

依次輸出有序鏈表的結點值。

Example Input

6 33 6 22 9 44 5

Example Output

5 6 9 22 33 44

Hint

不得使用數組!

Author

#include<stdio.h> #include<stdlib.h> struct vode {int date;struct vode *next; }; int main() {struct vode *head,*tail,*p,*q;head=(struct vode *)malloc(sizeof(struct vode ));head->next=NULL;tail=head;int n,i;scanf("%d",&n);for(i=1;i<=n;i++){p=(struct vode *)malloc(sizeof(struct vode ));p->next=NULL;scanf("%d",&p->date);tail->next=p;//尾插法tail=p;}int k=0;while(k=!k)//首先給k取反,k=1,然后while()語句在判斷其是否為1,等于1時才進行循環,不得不說這個這個排序算法太神奇了{p=head->next;q=p->next;while(q){if(p->date<q->date){int t;t=p->date;p->date=q->date;q->date=t;k=0;}//當while(q)時,不進入if判斷語句,自然就不能給k賦值為0,(之前的while(k=!k)把k賦值為1,)在下次進入while(k=!k)時自然k就不等于1了,結束循環,(k的精妙)else{p=p->next;q=q->next;}}}p=head->next;int s=0;while(p){if(s==0){printf("%d",p->date);s=1;}else printf(" %d",p->date);p=p->next;}return 0; }/*總結:這個對鏈表數據進行排序的算法思想是首先進入循環體,找到第一組p->date>q->date的數值,先對他們兩個進行排序 此時if語句執行完畢,在跳出進行while(q)的判斷,顯然上次進行if完成后p->date<q->date,所以這次的while(q)進入到else的語句 這時候就在開始進行找,直到找到另一組p->date>q->date的數據進行排序,直到q=NULL時結束內循環,跳出來,再從整個數據的第一組數在進行尋找(之前只要找到一組p->date>q->date 的數據,k就被重新賦值為0了,所以下次的while(k=!k)外循環肯定是成立的,當while(k=!k)不成成立時也就說明整個數據已經被排序完成。) */

總結

以上是生活随笔為你收集整理的SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。