单链表的排序与销毁

来源:互联网 发布:2016年7月淘宝新政策 编辑:程序博客网 时间:2024/05/19 14:34
#include<stdio.h>#include <malloc.h>typedef struct linknode{    int data;    linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表void Sort(Linklist L);//冒泡排序void ShowList(Linklist L);//输出链表内容void Distorylist(Linklist L);//销毁链表int main(void){    Linklist L1;    int n;    scanf("%d",&n);    L1=CreateList_end(n);    Sort(L1);    ShowList(L1);    Distorylist(L1);    return 0;}Linklist CreateList_end(int n){    Linklist head=(Linklist)malloc(sizeof(Node));    Node *p,*e;    p=head;    int x;    for(int i=0; i<n; i++)//尾插法建立链表    {        e=(Linklist)malloc(sizeof(Node));        scanf("%d",&x);        e->data=x;        p->next=e;        p=e;    }    p->next=NULL;//将链表的最后一个节点的指针域置空    head=head->next;//因为头结点为空,所以所以指向下一个节点这样才有数据域    return head;}void Sort(Linklist L)//冒泡排序{    Node *x;    for(; L!=NULL; L=L->next)        for(x=L->next; x!=NULL; x=x->next)            if(L->data>x->data)            {                int temp=L->data;                L->data=x->data;                x->data=temp;            }}void ShowList(Linklist L)//输出链表内容{    while(L)    {        printf("%d ",L->data);        L=L->next;    }    printf("\n");}void Distorylist(Linklist L)//销毁链表{    Node *p;    while(L)    {        p=L->next;        free(L);        L=p;    }}