单链表冒泡排序(交换节点)
Posted Farewell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表冒泡排序(交换节点)相关的知识,希望对你有一定的参考价值。
代码如下:
#include<iostream> #include<cstdlib> using namespace std; int num; typedef struct list { int data; struct list *next; }Lnode,*linklist; linklist Createlist(int n)//构建带头结点的链表 { linklist p, head,tail; head = (linklist)malloc(sizeof(Lnode)); tail = NULL; head->next = tail; for (int i = 0; i < n; i++) { p = (linklist)malloc(sizeof(Lnode)); cin >>p-> data; p->next = NULL; if (tail == NULL) head->next = p; else tail->next = p; tail=p; } return head;//返回头结点的地址 } void sortlist(linklist head)//对链表进行bubble sort { linklist pre, p,tail; tail = NULL; while (head->next != tail) { pre = head; p = head->next; while (p->next!=tail) { if (p->data > p->next->data) { pre->next = p->next; p->next = pre->next->next; pre->next->next = p; } else p = p->next; pre = pre->next; } tail = p; } } int main() { cin >> num; linklist head,x; head = Createlist(num); sortlist(head); x = head->next; while (x != NULL) { cout << x->data; x = x->next; } cout << endl; return 0; }
以上是关于单链表冒泡排序(交换节点)的主要内容,如果未能解决你的问题,请参考以下文章