Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define LIMIT_LOW 0
- #define LIMIT_HIGH 25
- /* 構造体の定義 */
- typedef struct tag {
- int temp; /* 温度 */
- struct tag *prev; /* 1つ前のデータへのポインタ変数 */
- struct tag *next; /* 1つ後のデータへのポインタ変数 */
- } tempData; /* 温度データ */
- /* 新データ作成関数 */
- tempData* makeNewNode(int t) {
- tempData* pNewNode;
- /*** tempData 型のメモリ領域確保 ***/
- pNewNode = (tempData*)malloc(sizeof(tempData));
- if (pNewNode != NULL) {
- /*** データ設定 ***/
- pNewNode->temp= t;
- pNewNode->prev = NULL;
- pNewNode->next = NULL;
- }
- return pNewNode;
- }
- int main(void) {
- int temp; /* 温度入力用変数 */
- tempData *pTop; /* 温度データリストのトップ */
- tempData *pLast; /* 温度データリストの末尾 */
- tempData *pNow; /* 温度データリスト内の現在位置 */
- tempData *pNew; /* 温度データの新規データ */
- /* 必要であれば,ここに変数を追加 */
- /* 最初のデータは,必ず範囲内のデータであるとする */
- scanf("%d", &temp);
- pTop = makeNewNode(temp);
- pLast = pTop;
- /* 次のデータを入力 */
- scanf("%d", &temp);
- while ( (LIMIT_LOW <= temp) && (temp <= LIMIT_HIGH)) {
- /* データ作成 */
- pNew = makeNewNode(temp);
- /* 先頭データより小さいか? */
- if (pNew->temp < pTop->temp) {
- /* 先頭の入れ替え */
- pNew->next = pTop;
- pTop->prev = pNew;
- pTop = pNew;
- } else {
- /* 挿入する場所を探す */
- pNow = pTop;
- /* 末尾に達するまで探す */
- while (pNow != pLast) {
- /* 1つ先のデータが pNew より大きかったら,そこが挿入ポイント */
- if (pNew->temp < pNow->next->temp) {
- /* 挿入処理 */
- pNow->next->prev = pNew;
- pNew->next = pNow->next;
- pNew->prev = pNow;
- pNow->next = pNew;
- /* 探索終了 */
- break;
- }
- pNow = pNow->next;
- }
- /* 探索が末尾に達して終了したら,末尾に追加 */
- if (pNow == pLast) {
- /* 末尾に追加 */
- pLast->next = pNew;
- pNew->prev = pLast;
- pLast = pNew;
- }
- }
- /* ちゃんとソートされてるか確かめるためのコード
- tempData *pHyoji = pTop;
- while (pHyoji != NULL) {
- printf("* %d\n", pHyoji->temp);
- pHyoji = pHyoji->next;
- }
- */
- /* 次のデータを入力 */
- scanf("%d", &temp);
- }
- /* 出力処理 */
- pNow = pLast;
- while (pNow != NULL) {
- printf("%d\n", pNow->temp);
- pNow = pNow->prev;
- }
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment