| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖, 1 人收藏
标题:链表:整数的分类 能帮我修改一下程序吗 求帮忙!!
取消只看楼主 加入收藏
樱花自在
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2012-12-29
结帖率:75%
收藏(1)
 问题点数:0 回复次数:3 
链表:整数的分类 能帮我修改一下程序吗 求帮忙!!
题目:给定N个数,每个数模M之后得到一个特征值,要求的是按照特征值从小到大输出每一个数,对于特征值相同的数,在输入数据时候,后输入的数先输出。
样例:
5 3
7 8 9 10 11

我的程序:
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Hn)
struct Hn
{
int num[2];
struct Hn *next;
};

struct Hn* creat(int n,int m)
{
    struct Hn * head,*p,*q;
    head= NULL;
    p= (struct Hn *)malloc(LEN);
    scanf("%d",&p->num[0]);
    p->num[1]=p->num[0]%m;
    head=p;
     q=p;
   while(n-1)
   {
    p= (struct Hn *)malloc(LEN);
    scanf("%d",&p->num[0]);
    p->num[1]=p->num[0]%m;
    q -> next = p;
    q=p;
    --n;
   }
    q->next =NULL;
    return head;
}
struct Hn *fun(struct Hn *head,int N,int M)
{
   int j,t,i=0;
   struct Hn *p,*k;
   if(head!=NULL )
   {
       if(N==1) return head;
       else
       {
           for(t=M-1;t>=0;t--)
           {
               p=head;      
               if(p->num[1]==t)p=head;
               else
               {
                  for(j=0;p!=NULL;j++)
                  {
                     if(p->next->num[1]==t)
                     {
                 i++;
                 k=p->next;
                 p->next=k->next;
                 k->next=head;
                 head=k;
                     }
             p=p->next;
                  }
               }
           }
       }
           
   }
  return head;
}


int main()
{
    int M,N;
    struct Hn *head,*q;
    scanf("%d%d",&N,&M);
    head=creat(N,M);
    q=fun(head,N,M);
    do
    {
    printf("%d ",q->num[0]);
    q=q->next;
    }while(q!=NULL);
    printf("\n");
    return 0;
}

我的程序在某些样例就不行了
比如
 5 3
3 6 9 10 12
还有其他的一些!!!

各位高手帮帮忙? 能帮我修改一下吗? 万分感激!!!
谢谢啊
搜索更多相关主题的帖子: include 
2012-12-29 15:56
樱花自在
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2012-12-29
收藏
得分:0 
好像是指针越界了 各位帮帮忙啊
2012-12-29 20:57
樱花自在
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2012-12-29
收藏
得分:0 
各位  这是我最新修改的 不知道为什么不行啊 帮帮忙吧


#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Hn)
struct Hn
{
int num[2];
struct Hn *next;
};
struct Hn* creat(int n,int m)
{
    struct Hn * head,*p,*q;
    head=NULL;
    p= (struct Hn *)malloc(LEN);
    scanf("%d",&p->num[0]);
    p->num[1]=p->num[0]%m;
    head=p;
    q=p;
    while(n-1)
    {
    p= (struct Hn *)malloc(LEN);
    scanf("%d",&p->num[0]);
    p->num[1]=p->num[0]%m;
    q -> next = p;
    q=p;
    --n;
   }
    q->next =NULL;
    return head;
}
struct Hn *move(struct Hn *head,int a)
{
int j;
struct Hn *p,*k;
p=head;
if(head!=NULL)
{
if (a!=1)
{
for(j=1;j<a-1;j++)
p=p->next;
k=p->next;
p->next=k->next;
k->next=head;
head=k;
}
}

return head;
}


int main()
{
    int M,N,t,i,s,k=0;
    struct Hn *head,*q;
    int a[10000];
    scanf("%d%d",&N,&M);
    head=creat(N,M);
    for(t=M-1;t>=0;t--)
    {
        i=0;
        do{
            i++;
            if(q->num[1]==t)
            {
               head=move(head,i);
               q=head;
               for(s=0;s<i;s++)
                    q=q->next;   
            }
            else
                q=q->next;
        }while(q!=NULL);
    }
    for(t=0;t<N;t++)
        head=move(head,a[t]);
    q=head;
    do
    {
    printf("%d ",q->num[0]);
    q=q->next;
    }while(q!=NULL);
    printf("\n");
    return 0;
}
2012-12-29 21:56
樱花自在
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2012-12-29
收藏
得分:0 
谢谢各位了
2013-06-24 19:44
快速回复:链表:整数的分类 能帮我修改一下程序吗 求帮忙!!
数据加载中...
 
   



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

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