数据结构之链表(c语言实现)
题目:升序链表。
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node * next;
}ElemSN;
ElemSN * createlink(int data[],int n)
{
ElemSN *h=NULL,*t,*newp;
int i;
for( i=0;i<n;i++)
{
newp=(ElemSN *)malloc(sizeof(ElemSN));
newp->data=data[i];
newp->next=NULL;
if(!h)
h=t=newp;
else
t=t->next=newp;
}
return h;
}
ElemSN * Shengxu(ElemSN * h)//重新生成一个新链表,每次尾插一个最小值。
{
ElemSN*p=h,*q=h,*pmin=h,*qmin=h,*hn=NULL,*t;
while(h)
{
for(p=q=pmin=qmin=h;p;q=p,p=p->next){
if(pmin->data>p->data)
{
pmin=p;
qmin=q;
}
}
if(pmin==h)
h=h->next;
else
qmin->next=pmin->next;
if(!hn){
pmin->next=NULL;
hn=t=pmin;
}
else{
pmin->next=NULL;
t=t->next=pmin;
}
}
return hn;
}
void printlink(ElemSN *h)
{
ElemSN *p;
p=h;
for(p=h;p;p=p->next)
printf("%5d",p->data);
}
int main(void)
{
int data[8]={8,2,3,4,5,6,7,9};
ElemSN * head;
head=createlink(data,8);
printlink(Delkey(head));
}
本文介绍了一种使用C语言实现升序链表的方法。通过创建链表节点,然后遍历链表找到最小值并将其插入到新链表中,最终生成一个按升序排列的链表。代码示例展示了如何创建链表、排序链表以及打印链表。
,升序链表。&spm=1001.2101.3001.5002&articleId=102491978&d=1&t=3&u=5cc15084ef3a42a4b9113eea24b15cea)
1万+

被折叠的 条评论
为什么被折叠?



