栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

已知线性链表第一个结点的指针为list,使用用c语言写一个创建链表算法、打印输出链表的算法,将该链表中数据域值最小的那个点移到链表的最前端的算法,写出完整的程序。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

已知线性链表第一个结点的指针为list,使用用c语言写一个创建链表算法、打印输出链表的算法,将该链表中数据域值最小的那个点移到链表的最前端的算法,写出完整的程序。

运行软件为Visual Studio 2019,如果使用别的编译器可能需要修改,将scanf_s改为scanf

#include

typedef struct node {
    int a;
    struct node* link;
}Lnode, * linklist;

linklist creat(int n) {//创建链表
    linklist p,r=NULL,list = NULL; 
    int a;
    int i;
    printf("请输入数据:n");
    for (i = 0; i < n; i++) {
        scanf_s("%d", &a);
        p = (linklist)malloc(sizeof(Lnode));
        p->a = a;
        p->link = NULL;
        if (list == NULL)
            list = p;
        else
            r->link = p;
        r = p;
    }
    return(list);
}

linklist seek(linklist li) {//查找最小值,返回指针
    linklist p = li, minp;
    minp = p;
    p = li->link;

    while (p != NULL) {
        if (minp->a > p->a)
            minp = p;
        p = p->link;
    }
    return(minp);
}
linklist insert(linklist minp, linklist list) {//将最小值插入到链表第一个位置并返回表头list
    linklist p=list;
    if (minp->link == NULL) {//判断最小值是否在最末尾
        while (p->link != minp) {
            p = p->link;
        }
        p->link = NULL;

        minp->link = list;
        list = minp;
        
        
    }
    else {
        while (p->link != minp) {
            p = p->link;
        }
        p->link = minp->link;
        minp->link = list;
        list = minp;
    }
    return(list);
}
void traverse(linklist list) {//遍历
    linklist p;
    p = list;
    while (p!= NULL) {
        printf("%d ", p->a);
        p = p->link;
    }
}
int main() {
    printf("请输入链表长度:");
    int sum;
    linklist li;
    scanf_s("%d", &sum);
    li = creat(sum);
    traverse(insert(seek(li), li));
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290958.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号