标题:这个用c 语言怎么写
只看楼主
丫头猫咪
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-3-27
结帖率:25%
 问题点数:0 回复次数:6 
这个用c 语言怎么写
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
HINT
搜索更多相关主题的帖子: 空间 正整数 线性表 
2017-06-12 12:43
丫头猫咪
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-3-27
得分:0 
#include<stdio.h>
int main()
{
 struct student
 {
  int num;
  student *next;
 };
 student *p,*q,*s,*ss,*head=NULL;
 int n,a,z,h=0;
 scanf("%d",&n);
 for(a=1;a<=n;a++)
 {
  p=new student;
  if(head==NULL)
   head=p;
  else q->next=p;
  scanf("%d",&p->num);
  q=p;
 }
 q->next=NULL;

 scanf("%d",&z);                           

 p=head;                                    
 for(a=1;a<=n;a++)
 {
  if(z!=0)
  {
   if(p->num==z)
   {
       q=p;
    z=0;
   }
      else
   {
    s=p;
          p=p->next;
   }
  }
  else if(z==0)
  {
   s=p;
   p=p->next;
   if(s->num==p->num)
    h=h;
   else h=h+1;
  }
  
 }
 printf("%d\n",h);
 
 p=head;                                 
 while(p!=q&&h!=0)
 {
  if(p==head)
  {
   s=p->next;
      ss=s->next;
   head=NULL;
   p->next=NULL;
   s->next=p;
   p=s;
  }
  else
  {
   s=ss;
      ss=ss->next;
   s->next=p;
   p=s;
  }
 }
 head=p;

 p=head;                                    
 while(p->next!=NULL)
 {
  p=p->next;
 printf("%d ",p->num);
 }
 return  0;
}
2017-06-12 14:22
丫头猫咪
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-3-27
得分:0 
会了
2017-06-12 14:23
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 3楼 丫头猫咪
are you sure?怎么感觉不对劲啊?实例化操作不需要?

剑栈风樯各苦辛,别时冰雪到时春
2017-06-12 19:29
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
补充一个吧,不一定对,可以参考。比较我还太年轻
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
    int data;
    struct Node *next;
}Node;
void out(Node *h, int x){
    if(x>h->data){
        out(h->next,x);
        printf("%d ",h->data);
    }
}
int main(void){
    int n,i,x,num=0;
    scanf("%d",&n);
    Node *h;
    Node *node=h;
    for(i=0;i<n;i++){
        node = (Node*)malloc(sizeof(Node));
        scanf("%d",&node->data);
        node = node->next;
    } 
    scanf("%d",&x);
    node = h;
    while(node!=NULL){
        if(node->data>x){
            num++;
        }
        node= node->next;
    }
    printf("%d",num);
    out(h,x);
    return 0;
}

剑栈风樯各苦辛,别时冰雪到时春
2017-06-12 19:37
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
得分:0 
回复 5楼 林月儿
看了你的这个代码,写了下,为什么在vc上通过不了?提示最多错误的就是指向结构体的。不明白为什么呀?
2017-06-13 00:48
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 6楼 peng880610
你看看你的源文件后缀是不是.c,不是的话,改成.c

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-13 04:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477845-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.050021 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved