青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

鏈表排序之冒泡、插入、選擇

Posted on 2010-08-20 14:24 David Fang 閱讀(457) 評論(0)  編輯 收藏 引用 所屬分類: 算法點滴
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 typedef struct LinkNode{
  5     int val;
  6     struct LinkNode* next;
  7 }LinkNode;
  8 
  9 LinkNode* CreateList(int A[], int count)
 10 {
 11     LinkNode* head = (LinkNode*)malloc(sizeof(LinkNode));
 12     head->val = A[0];
 13     head->next = NULL;
 14 
 15     LinkNode* p = head;
 16     
 17     for (int i = 1; i < count; ++i)
 18     {
 19         p->next = (LinkNode*)malloc(sizeof(LinkNode));
 20         p->next->val = A[i];
 21         p->next->next = NULL;
 22         p = p->next;
 23     }
 24 
 25     return head;
 26 }
 27 
 28 //asscending sort link list 
 29 //
 30 LinkNode* SortLinkListBubble(LinkNode* head)
 31 {
 32     if (NULL == head)
 33     {
 34         return head;
 35     }
 36 
 37     //points to the last, also the bigest value node
 38     LinkNode* lastN = NULL;
 39 
 40     while(true)
 41     {
 42         LinkNode* n = head->next;
 43 
 44         if (n == lastN)
 45         {
 46             break;
 47         }
 48 
 49         if (n->val < head->val)
 50         {
 51             head->next = n->next;
 52             n->next = head;
 53             head = n;
 54         }
 55 
 56         LinkNode* pre = head;
 57         LinkNode* cur = head->next;
 58         LinkNode* tmp;
 59         n = cur->next;
 60 
 61         while(lastN != n)
 62         {
 63             if (n->val < cur->val)
 64             {
 65                 tmp = n->next;
 66                 cur->next = n->next;
 67                 n->next = cur;
 68                 pre->next = n;
 69                 n = tmp;
 70             }
 71             else
 72             {
 73                 n = n->next;
 74             }
 75             pre = pre->next;
 76             cur = cur->next;
 77         }
 78 
 79         lastN = cur;
 80     }
 81 
 82     return head;
 83 }
 84 
 85 LinkNode* SortLinkListInsertion(LinkNode* head)
 86 {
 87     if (NULL == head || NULL == head->next)
 88     {
 89         return head;
 90     }
 91 
 92     LinkNode* r = head->next;
 93     LinkNode* tmp;
 94     head->next = NULL;
 95 
 96     while(NULL != r)
 97     {
 98         if (r->val < head->val)
 99         {
100             tmp = r->next;
101             r->next = head;
102             head = r;
103             r = tmp;
104         }
105         else
106         {
107             LinkNode* p = head;
108             while(NULL != p->next)
109             {
110                 if (r->val >= p->val && r->val <= p->next->val)
111                 {
112                     tmp = r->next;
113                     r->next = p->next;
114                     p->next = r;
115                     r = tmp;
116                     break;
117                 }
118                 else
119                 {
120                     p = p->next;
121                 }
122             }
123 
124             if (NULL == p->next)
125             {
126                 tmp = r->next;
127                 r->next = NULL;
128                 p->next = r;
129                 r = tmp;
130             }
131         }
132     }
133 
134     return head;
135 }
136 
137 LinkNode* SortLinkListSelection(LinkNode* head)
138 {
139     if (NULL == head || NULL == head->next)
140     {
141         return head;
142     }
143 
144     LinkNode* p = NULL;
145     LinkNode* pre = NULL;
146     LinkNode* pmin = NULL;
147     LinkNode* pminpre = NULL;
148     LinkNode* L = NULL;
149     LinkNode* Ltail = NULL;
150 
151     while (NULL != head && NULL != head->next)
152     {
153         pminpre = pmin = head;
154         
155         if (head->val > head->next->val)
156         {
157             pmin = head->next;
158         }
159 
160         pre = head;
161         p = head->next;
162 
163         while(NULL != p)
164         {
165             if (pmin->val > p->val)
166             {
167                 pminpre = pre;
168                 pmin = p;
169             }
170             pre = pre->next;
171             p = p->next;
172         }
173 
174         //delete pmin from original list
175         if (pmin == head)
176         {
177             head = head->next;
178         }
179         else
180         {
181             pminpre->next = pmin->next;
182         }
183 
184         //add it to the new list
185         if (NULL == L)
186         {
187             L = Ltail = pmin;
188             pmin->next = NULL;
189         }
190         else{
191             Ltail->next = pmin;
192             Ltail = pmin;
193             pmin->next = NULL;
194         }
195     }
196 
197     //do not forget the last node
198 
199     Ltail->next = head;
200     return L;
201 }
202 
203 void ShowList(LinkNode* L)
204 {
205     LinkNode* p = L;
206     printf("%d", p->val);
207 
208     while(p->next)
209     {
210         p = p->next;
211         printf("-->%d", p->val);
212     }
213 
214     printf("\n");
215 }
216 
217 int main(int argc, char *argv[])
218 {
219     //int A[] = {3, 6, 9, 8, 5, 2, 1, 4, 7, 0};
220     int A[] = {3698321276};
221     
222     LinkNode* L = CreateList(A, 10);
223 
224     ShowList(L);
225 
226     //L = SortLinkListInsertion(L);
227 
228     //L = SortLinkListBubble(L);
229 
230     L = SortLinkListSelection(L);
231 
232     ShowList(L);
233 
234     return 0;
235 }
    寫得有點混亂,有點像C又有點像C++,權當參考吧

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


posts - 9, comments - 13, trackbacks - 0, articles - 0

Copyright © David Fang

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            avtt综合网| 一色屋精品亚洲香蕉网站| 亚洲人体影院| 欧美在线日韩精品| 亚洲欧美制服另类日韩| 亚洲在线不卡| 亚洲欧美大片| 性18欧美另类| 久久久久九九九九| 亚洲片在线资源| 久久av红桃一区二区小说| 国产精品婷婷午夜在线观看| 久久国产精品久久久久久电车| 亚洲第一伊人| 欧美一区二区三区四区夜夜大片| 国产精品视频一区二区三区| 欧美激情导航| 国产精品久久久久久模特| 亚洲性感美女99在线| 亚洲人人精品| 欧美激情一区二区| 亚洲电影观看| 亚洲精品一区二区三区不| 欧美插天视频在线播放| 亚洲精品国产拍免费91在线| 日韩一区二区免费高清| 亚洲自拍偷拍网址| 久久久亚洲午夜电影| 欧美片在线观看| 国产日韩一级二级三级| 亚洲第一黄网| 欧美在线三级| 亚洲国产精品一区二区尤物区| 香蕉成人伊视频在线观看| 日韩亚洲欧美一区| 亚洲一区免费视频| 久久久久国产精品一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美亚洲自偷自偷| 欧美99在线视频观看| 国产精品美女久久久久aⅴ国产馆| 黑人极品videos精品欧美裸| 亚洲午夜一区| 亚洲国产一二三| 久久精品国产精品亚洲| 欧美日韩精品| 亚洲国产小视频| 久久久99爱| av成人老司机| 欧美大片一区| 在线成人小视频| 久久久久国产一区二区三区| 亚洲图片在线观看| 欧美日本国产一区| 亚洲欧洲日产国产网站| 欧美电影免费观看高清完整版| 性欧美办公室18xxxxhd| 国产精品毛片在线| 亚洲一区二区三区在线观看视频| 亚洲电影天堂av| 美女免费视频一区| 亚洲国产精品久久久| 免播放器亚洲| 久久九九热re6这里有精品| 国产精品久久| 亚洲一区二区少妇| 宅男精品导航| 国产伦精品一区| 亚洲综合好骚| 午夜日韩在线| 红桃视频一区| 欧美高清视频www夜色资源网| 久久综合狠狠| 亚洲精品一区二区三区福利| 欧美电影打屁股sp| 欧美激情久久久久| 亚洲视频999| 亚洲午夜精品网| 国产欧美精品日韩区二区麻豆天美| 欧美亚洲一区三区| 一二三四社区欧美黄| 香蕉久久a毛片| 欧美韩日一区| 亚洲精品日韩一| 亚洲免费观看| 国产欧美日本一区视频| 欧美一区二区三区免费视频| 性欧美1819sex性高清| 国语自产偷拍精品视频偷| 毛片av中文字幕一区二区| 欧美a级片网站| 一二三区精品福利视频| 亚洲在线视频免费观看| 国产欧美在线看| 免费试看一区| 欧美精品国产精品| 久久精品国产77777蜜臀| 久久久久久久综合狠狠综合| 亚洲靠逼com| 久久国内精品视频| 国产精品入口尤物| 每日更新成人在线视频| 欧美精品一区在线播放| 亚洲欧美一区二区激情| 久久精品国产久精国产思思| 亚洲免费av片| 久久大逼视频| 制服丝袜亚洲播放| 久久精品免费看| 亚洲午夜国产成人av电影男同| 性8sex亚洲区入口| 夜夜爽av福利精品导航| 久久精品99无色码中文字幕| 99re6热只有精品免费观看| 午夜精品久久| 宅男精品视频| 欧美aⅴ99久久黑人专区| 久久国产加勒比精品无码| 欧美精品一区三区| 欧美激情精品久久久久久大尺度 | 亚洲一区二区三区国产| 亚洲第一区中文99精品| 亚洲永久在线| 亚洲视频欧美在线| 免费在线播放第一区高清av| 久久精品导航| 国产精品欧美日韩久久| 亚洲日本成人网| 国产一区日韩一区| 亚洲影院高清在线| 一区二区三区av| 女同性一区二区三区人了人一 | 久久九九国产精品| 国产精品日韩久久久| 亚洲精品国产精品国自产观看| 亚洲第一页中文字幕| 久久精品成人一区二区三区蜜臀| 免费在线观看成人av| 麻豆久久久9性大片| 久久久噜噜噜久久久| 国产乱肥老妇国产一区二| 9l国产精品久久久久麻豆| 夜夜嗨一区二区| 欧美视频日韩| 一区二区av| 亚洲自拍啪啪| 国产精品一区二区视频| 午夜精品影院在线观看| 久久精品亚洲精品| 国产真实精品久久二三区| 欧美在线播放| 久久天堂成人| 亚洲黄网站在线观看| 欧美大片在线看| 亚洲开发第一视频在线播放| 亚洲精品中文字幕在线观看| 欧美绝品在线观看成人午夜影视 | 欧美日韩一区综合| 一区二区三区精品国产| 亚洲欧美在线一区| 国产一区在线观看视频| 久久国产天堂福利天堂| 欧美成人午夜影院| 亚洲美女中出| 国产精品综合| 欧美亚洲视频在线观看| 免费观看日韩| 日韩小视频在线观看专区| 欧美三级网址| 久久成人精品视频| 亚洲精品你懂的| 亚洲免费伊人电影在线观看av| 国产日韩精品一区二区三区在线| 久久蜜桃精品| 正在播放亚洲| 欧美成人一区二免费视频软件| 亚洲色诱最新| 伊人久久大香线蕉综合热线| 欧美日韩成人综合在线一区二区| 亚洲直播在线一区| 亚洲国产成人久久综合| 羞羞漫画18久久大片| 亚洲国产一区在线观看| 国产精品黄视频| 另类专区欧美制服同性| 亚洲午夜精品| 亚洲国产精品黑人久久久| 午夜亚洲伦理| 日韩视频在线免费| 狠狠色狠狠色综合日日小说| 欧美日韩综合精品| 狼人天天伊人久久| 亚洲欧美日韩高清| 日韩网站免费观看| 欧美激情精品久久久久久黑人 | 国产日本欧洲亚洲| 欧美精品在线免费| 久久亚洲不卡| 欧美一区二区三区精品| 一区二区三区久久久|