<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>自己参照型構造体</title>
<link>https://ameblo.jp/327san/</link>
<atom:link href="https://rssblog.ameba.jp/327san/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ブログの説明を入力します。</description>
<language>ja</language>
<item>
<title>gw2</title>
<description>
<![CDATA[ #include <stdio.h><br>#include <stdlib.h><br><br>#define MIN_CODE 210001<br>#define MAX_CODE 210100<br>#define MIN_AGE 20<br>#define MAX_AGE 60<br><br><br>typedef struct data{<br>    int code;<br>    int age;<br>    struct data *next_p;<br>    struct data *before_p;<br>}shop;<br><br>shop *inputData(int code, int age, shop *start_p);<br>void outputData(shop *start_p);<br>void free_list(shop *p);<br><br>int main(void) {<br>    shop *start_p = NULL;        /* 先頭ポインタにNULLを設定 */<br>    shop start={200000,10,NULL,NULL};<br>    shop end={300000,90,NULL,NULL};<br>    start.next_p = &amp;end;<br>    end.before_p = &amp;start;<br>    start_p = &amp;start;<br><br>    start_p = inputData(210010, 49, start_p);<br>    start_p = inputData(210017, 49, start_p);<br>    start_p = inputData(210012, 30, start_p);<br>    start_p = inputData(210008, 49, start_p);<br>    start_p = inputData(210050, 49, start_p);<br>    start_p = inputData(210011, 30, start_p);<br><br>    /* リストの表示 */<br>    outputData(start_p);<br><br>    /* リストの開放 */<br>    free_list(start_p);<br>    return 0;<br><br>}<br>/*** リストにデータを登録 ***/<br>shop *inputData(int code, int age, shop *start_p)<br>{<br>    shop *p;<br><br>    /* 記憶領域の確保 */<br>    if ((p = (shop *) malloc(sizeof(shop))) == NULL) {<br>        printf("malloc error\n");<br>        exit(EXIT_FAILURE);<br>    }<br><br>    /* リストにデータを登録 */<br>    p-&gt;code = code;<br>    p-&gt;age= age;<br><br>    /* ポインタのつなぎ換え */<br><br>    p-&gt;before_p = start_p;<br>    p-&gt;next_p = start_p-&gt;next_p;<br>    (start_p-&gt;next_p)-&gt;before_p = p;<br>    start_p-&gt;next_p = p;<br><br><br>    //p-&gt;next_p = start_p;        /* 今までの先頭ポインタを次ポインタに */<br>    //start_p = p;            /* 新たな領域を先頭ポインタに */<br><br>    return start_p;<br>}<br><br>/*** リストの表示 ***/<br>void outputData(shop *start_p)<br>{<br>    shop *initStart_p = start_p;<br>    int cnt=0;<br>    int cntNum = 0;<br>    int cntLook = 0;<br>    int inputMenu = 0;<br>    shop *look_p;<br>    shop *right_p;<br><br>    printf("1:現状\n");<br>    printf("2:並び替え\n");<br>    printf("&gt;");<br>    scanf("%d", &amp;inputMenu);<br>    if(inputMenu == 1){<br>    start_p = start_p-&gt;next_p;<br>        printf("社員番号　年齢\n");<br>            while (start_p-&gt;next_p != NULL) {    /* 次ポインタがNULLまで処理 */<br>                printf("%-10d%-2d\n", start_p-&gt;code, start_p-&gt;age);<br>                start_p = start_p-&gt;next_p;<br>            }<br>    }else{<br>        while (start_p != NULL) {    /* 次ポインタがNULLまで処理 */<br>            start_p = start_p-&gt;next_p;<br>            cntNum++;<br>        }<br>        cntNum = cntNum - 3;<br><br>        for(cnt=0; cnt &lt; cntNum; cnt++){<br>            start_p = initStart_p;<br>            look_p = start_p-&gt;next_p;<br>            right_p = look_p-&gt;next_p;<br>            for(cntLook = 0; cntLook &lt; (cntNum - cnt); cntLook++){<br>                if((look_p-&gt;code) &gt; (right_p-&gt;code)){<br><br>                    look_p-&gt;next_p = right_p-&gt;next_p;<br>                    right_p-&gt;before_p = look_p-&gt;before_p;<br>                    look_p-&gt;before_p = right_p;<br>                    right_p-&gt;next_p = look_p;<br>                    (look_p-&gt;next_p)-&gt;before_p = look_p;<br>                    (right_p-&gt;before_p)-&gt;next_p = right_p;<br><br>                    right_p = look_p-&gt;next_p;<br><br>                }else{<br>                    look_p = look_p-&gt;next_p;<br>                    right_p = look_p-&gt;next_p;<br><br>                }<br><br>            }<br>        }<br>        start_p = initStart_p;<br>        start_p = start_p-&gt;next_p;<br>        printf("社員番号　年齢\n");<br>        while (start_p-&gt;next_p != NULL) {    /* 次ポインタがNULLまで処理 */<br>            printf("%-10d%-2d\n", start_p-&gt;code, start_p-&gt;age);<br>            start_p = start_p-&gt;next_p;<br>        }<br>    }<br><br><br>}<br><br>/*** リストの開放 ***/<br>void free_list(shop *p)<br>{<br>    shop *p2;<br><br>    while (p != NULL) {     /* 次ポインタがNULLまで処理 */<br>        p2 = p-&gt;next_p;<br>        free(p);<br>        p = p2;<br>    }<br>}<br></stdlib.h></stdio.h>
]]>
</description>
<link>https://ameblo.jp/327san/entry-10555672910.html</link>
<pubDate>Sun, 06 Jun 2010 17:39:52 +0900</pubDate>
</item>
</channel>
</rss>
