problem description
輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。
input
第一行輸入整數個數n;
第二行輸入n個無序的整數。
output
依次輸出有序鍊錶的結點值。
sample input
633 6 22 9 44 5
sample output
5 6 9 22 33 44
hint
不得使用陣列!
參考**一:
解釋:先順序建立鍊錶再排序。
#include #include struct node
;struct node *creat(int n)
return head;
}void f(struct node *head)}}
}void print(struct node *head)
}int main()
參考**二:
解釋:在構建鍊錶的時候,每插入乙個元素,都進行比較,確保是差不多從小到大(非降序)建立鍊錶。在插入時,考慮如果是只有頭結點,那麼直接插在頭結點之後。如果除了頭結點還有乙個元素,那麼將要插入的元素就要和鍊錶中已有的這個元素比較大小,如果比它大,插在它後面,如果小於或等於它,插在它前面。如果除了頭結點還有兩個或以上的元素就要比較一下,找到前乙個元素比待插入的元素小後面的元素比待插入的元素大的位置插入待插入元素。如果比所有鍊錶中已有的結點都大,則要插在最後。(為了方便寫**,用指標q尋找插入位置,一開始,q指向頭結點,如果只有頭結點,把元素插入q之後,如果並非只有頭結點,分成q->next==null和q->next!=null,即是否有乙個元素,若有乙個以上的元素,則需要尋找插入位置,前面的元素比它小,後面的元素比它大。若只有乙個元素但待插入的元素比這個元素大或待插入的元素比煉表中所有的元素都大,那麼插在這個元素後面或整個鍊錶的後面,如果鍊錶中只有乙個元素且插入的元素比這個元素小,就要插在這個元素前面,這種情況可以放在第一種情況裡,把頭結點放乙個很小的數就可以歸到有乙個以上元素的情況中去。)
#include #include struct node
;struct node *creat(int n)
else
else if(q->next==null&&p->data>q->data)
else q=q->next;}}
}return head;
}void print(struct node *head)
}int main()
資料結構實驗之鍊表六 有序鍊錶的建立
time limit 1000ms memory limit 65536k 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。第一行輸入整數個數n 第二行輸入n個無序的整數。依次輸出有序鍊錶的結點值。6 33 6 22 9 44 5 5 6 9 22 33 44 ...
資料結構實驗之鍊表六 有序鍊錶的建立
資料結構實驗之鍊表六 有序鍊錶的建立 time limit 1000ms memory limit 65536k 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。第一行輸入整數個數n 第二行輸入n個無序的整數。依次輸出有序鍊錶的結點值。6 33 6 22 9 4...
資料結構實驗之鍊表六 有序鍊錶的建立
time limit 1000ms memory limit 65536k 題目描述 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。輸入 第一行輸入整數個數n 第二行輸入n個無序的整數。輸出 依次輸出有序鍊錶的結點值。示例輸入6 33 6 22 9 44 5 ...