编写一个能将链表创建与排序的小程序。
假设链表节点的结构体声明如下
struct node
{
int i;
char c;
node *next;
};
用户先依次输入每个节点的内容,要求输入的i要大于0
直到输入-1为止
按照i字段对链表所有元素进行由小到大排序并输出
效果如下:
输入:
12 a
14 c
10 b
-1
输出:
[10,b];[12,a];[14,c]
//不使用链表
#include <iostream>
using namespace std;
struct data
{
int i;
char c;
data *next;
}da[100];
int main()
{
int j,temp,flag=0;
char c1;
for(j=0;;j++)
{
cin>>da[j].i;
if(da[j].i!=-1)
{
cin>>da[j].c;
}
else
{
break;
}
}
for(int m=0;m<j-1;m++)
{
for(int n=0;n<j-m-1;n++)
{
if(da[n].i>da[n+1].i)
{
temp=da[n].i;
da[n].i=da[n+1].i;
da[n+1].i=temp;
c1=da[n].c;
da[n].c=da[n+1].c;
da[n+1].c=c1;
}
}
}
for(int k=0;k<j;k++)
{
if(flag==0)
{
cout<<"["<<da[0].i<<","<<da[0].c<<"]";
flag=1;
}
else
{
cout<<";["<<da[k].i<<","<<da[k].c<<"]";
}
}
}
或
#include <iostream>
using namespace std;
struct data
{
int i;
char c;
data *next;
};
void px(data a[],int len);//利用排序函数
int main()
{
data s[50];
for(int m=0;m<100;m++)
{
cin>>s[m].i;
if(s[m].i==-1)
{
break;
}
cin>>s[m].c;
}
int n=0;
for(int k=0;s[k].i!=-1;k++)
{
n=n+1;
}
px(s,n);
for(int j=0;j<n;j++)
{
cout<<'['<<s[j].i<<','<<s[j].c<<']';
if(j==n-1)
{
break;
}
cout<<";";
}
return 0;
}
void px(data s[],int len)//排序
{
for(int c=0;c<len-1;c++)
{
int min=c;
for(int j=c+1;j<len;j++)
{
if(s[j].i<s[min].i)
{
min=j;
}
data temp=s[c];
s[c]=s[min];
s[min]=temp;
}
}
}