运行软件为Visual Studio 2019,如果使用别的编译器可能需要修改,将scanf_s改为scanf
#includetypedef 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)); }



