求用C++编写的一个单向链表 ,输入十个数,排序并输出最大值最小值

2025-05-20 00:22:35
推荐回答(1个)
回答1:

#include
using namespace std;
#define N 10
struct link{
    int x;
    link *next;
};
int main(){
    link *createLink();
    void sortLink(link *h);
    void printLink(link *h);
    int maxOfLink(link *h);
    int minOfLink(link *h);
    link *head;
    head=createLink();
    sortLink(head);
    printLink(head);
    printf("max is %d\n",maxOfLink(head));
    printf("min is %d\n",minOfLink(head));
    return 0;
}
link *createLink(){
    link *q,*h=NULL;
    for(int i=0;i        q=new link;
        scanf("%d",&q->x);
        q->next=h;
        h=q;
    }
    return h;
}
void sortLink(link *h){
    int x;
    link *q;
    for(int i=1;i        q=h;
        for(int j=0;j            if(q!=NULL && q->next!=NULL &&
            q->x>q->next->x){
                x=q->x;
                q->x=q->next->x;
                q->next->x=x;
            }
            q=q->next;
        }
    }
}
void printLink(link *h){
    printf("%d",h->x);
    h=h->next;
    while(h!=NULL){
        printf(" %d",h->x);
        h=h->next;
    }
    printf("\n");
}
int maxOfLink(link *h){
    int ans=h->x;
    while(h!=NULL){
        if(h->x>ans) ans=h->x;
        h=h->next;
    }
    return ans;
}
int minOfLink(link *h){
    int ans=h->x;
    while(h!=NULL){
        if(h->xx;
        h=h->next;
    }
    return ans;
}