單鏈表實現冒泡排序演算法(C實現)

來源:互聯網
上載者:User

本實現主要採用交換指標的方法,其中附加有單鏈表及其相關的實現

#include <stdio.h>struct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;typedef int ElementType;struct Node{ElementType Element;Position Next;};List initList(){List L = (List)malloc(sizeof(struct Node));L->Next = NULL;        return L;}void insertElement(List L){int element;while(scanf("%d", &element)){Position tmp = (Position)malloc(sizeof(struct Node));tmp->Element = element;tmp->Next = L->Next;L->Next = tmp;}}void printList(List L){Position P = L->Next;printf("L->");while(P != NULL){printf("%d - >", P->Element);P = P->Next;}printf("NULL\n");}int get_length(List L){int i = 0;Position P = L->Next;while(P != NULL){i++;P = P->Next;}return i;}void BubblePoint(List L){Position pre;Position cur;Position next;int i, j;i = get_length(L);        printf("length = %d\n", i);while(i != 1){pre = L;                cur = L->Next;                next = cur->Next;                j = i;i--;while(j != 1){j--;if(cur->Element > next->Element){cur->Next = next->Next;pre->Next = next;next->Next = cur;pre = next;next = cur->Next;}else{pre = cur;cur = next;next = next->Next;}}}}int main(int argc, char **argv){List L;L = initList(L);insertElement(L);        printList(L);BubblePoint(L);printList(L);}

執行結果如下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.