#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int Element; // 节点中的元素为整数类型
struct Node * Next; // 指向下一个节点
}Node;
Node* initial(); //链表初始化,创建头结点
void create(Node *L,int e); //头插法插入结点
int sort(Node *L,int n); //链表排序
int getelem(Node *L,int n); //获取链表第n个元素值
int main(){
Node *L=initial();
for(int i=0;i<5;i++)
{
int e;
scanf("%d",&e);
create(L,e);
}
sort(L,5);
for(int i=0;i<5;i++)
{
printf("%d ",getelem(L,i));
}
}
Node* initial(){ //链表初始化,创建头结点
Node *L;
L=(Node *)malloc(sizeof(Node));
L->Next=NULL;
return L;
}
void create(Node *L,int e){ //头插法插入结点
Node *s;
s=(Node *)malloc(sizeof(Node));
s->Element=e;
s->Next=L->Next;
L->Next=s;
}
int sort(Node *L,int n){ //链表排序
if(L->Next==NULL)
return 0;
Node *p=L->Next;
if(p->Next==NULL)
return 0;
Node *q=p->Next;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if((p->Element)>(q->Element))
{int tmp=p->Element;
p->Element=q->Element;
q->Element=tmp;
}
p=q;
q=q->Next;
}
p=L->Next;
q=p->Next;
}
}
int getelem(Node *L,int n){ //获取链表第n个元素值
if(L->Next==NULL)
return 0;
Node *p=L->Next;
int e;
for(int i=0;i<n;i++)
{
p=p->Next;
}
e=p->Element;
return e;
}
运行结果: