链表(线性表)

时间限制: 1 Sec  内存限制: 128 MB
提交: 99  解决: 72
[提交][状态][讨论版]

题目描述

(线性表)设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法 :(要求用最少的时间和最小的空间)
(1)确定在序列中比正整数x大的数有几个(相同的数只计算一次);
(2) 在单链表将比正整数x小的数按递减次序排列;

输入

输入长度:13

输入数据:4 5 7 7 8 10 11 15 15 16 17 20 20

输入x:10

输出

5

8 7 7 5 4

样例输入

7
1 2 3 4 5 6 6
4

样例输出

2
3 2 1 
#include<iostream>
using namespace std;
struct mm
{int a;
mm *s;
};
int main()
{int n,b,c;
mm *p,*h,*head;
p=new mm;
p->s=NULL;
cin>>n;
 while(n--)
 { 
 cin>>p->a;
h=new mm;
h->s=p;
p=h;
 }
 cin>>b;
 int i=1;
 p=p->s;
 //c=p->a;
 n=0;
 head=p;
 while(p!=NULL)
 {
	if(p->a>b&&c!=p->a)
	{n++;c=p->a;}
	p=p->s;
	
 }
cout<<n<<endl;
p=head;
while(p!=NULL)
{if(p->a<b)
cout<<p->a<<' ';
p=p->s;
}
	
cout<<endl;
return 0;
}

原文地址:https://www.cnblogs.com/oversea201405/p/3767017.html