链表(线性表)

来源:互联网 发布:剑三成男痞气捏脸数据 编辑:程序博客网 时间:2024/05/16 04:54
#include <iostream>using namespace std;struct number{int num;number *next;};number *creatlink(number *head,int n);number *sort1(number *head,int k);number *sort2(number *head,int t,int n);void print(number *head,int n);int main(){     int m,n;number *head;head=NULL;cin>>n;head=creatlink(head,n);cin>>m;   sort1(head,m);   sort2(head,m,n);  return 0;}number *creatlink(number *head,int n){int i; number *p,*s;p=head;for(i=0;i<n;i++){   s=new number;   cin>>s->num;   if(head==NULL)   head=s;   else   p->next=s;   p=s;}p->next=NULL;  return (head);}number *sort1(number *head,int k)//da{  int a=0;   number *p,*s;   p=head;   s=head->next; while(s!=NULL) {    if(s->num>k&&s->num>p->num)   a++;   p=s;   s=s->next; } cout<<a<<endl; return (head);}number *sort2(number *head,int t,int n)//xiao{    int i=1,j,k;number *p,*s;p=s=head;while(i<n){s=s->next;i++;}k=s->num;if(t<=k){for(i=0;i<n;i++){if((p->num)>=t){j=i;break;}   p=p->next;}}   else      j=n;print(head,j);return (head);}void print(number *head,int n){    number *p;    int i=1;  p=head;  if(n==1)  cout<<p->num<<' '; else {while(i<n) {p=p->next; i++; } cout<<p->num<<' '; print(head,n-1); }}


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

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

输入x:10

Output
5

8 7 7 5 4

Sample Input
7
1 2 3 4 5 6 6
4
Sample Output
2
3 2 1

0 0
原创粉丝点击