链表(线性表)
时间限制: 1 Sec 内存限制: 128 MB
提交: 99 解决: 72
[提交][状态][讨论版]
提交: 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; }