qq_45335987 2021-07-05 18:21 采纳率: 100%
浏览 41
已采纳

有没有会做这个的,大一没学链表

img

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-07-05 20:56
    关注
    typedef struct _WORDS
    {
        int num;
        int level;
        int idx;
        _WORDS *next;
    }WORDS;
    
    WORDS *head = NULL;
    int n=0;
    
    void createWords()
    {
        head = (WORDS*)malloc(sizeof(WORDS));
        head->num = 1;
        head->level = 0;
        head->idx = 0;
        WORDS *q = head;
        for(int i=2;i<=n;i++)
        {
            WORDS *p = (WORDS*)malloc(sizeof(WORDS));
            p->num = i;
            p->level = -1;
            p->idx = -1;
            p->next = NULL;
            q->next = p;
            q = p;
        }
    }
    
    void sortNum()
    {
        WORDS *p = head;
        int i=0;
        int j=0;
        while(p != NULL)
        {
            i=1;
            if(p->level <= 0)
            {
                if(p->level < 0)
                {
                    p->level = i;
                    i++;
                }
                p->idx = j;
                
                int num = p->num;
                WORDS *q = p->next;
                while(q != NULL)
                {
                    if(q->level < 0 && q->num % num == 0)
                    {
                        q->level = i;
                        q->idx = j;
                        num = q->num;
                        i++;
                    }
                    q = q->next;
                }
                j++;
            }
            p = p->next;
        }
    }
    
    void print()
    {
        int level = 0;
        int num = 0;
        while(1)
        {
            WORDS *p = head;
            while(p != NULL)
            {
                if(p->level == level)
                {
                    printf("%3d ",p->num);
                    num++;
                    if(num == n)
                        break;
                }
                p = p->next;
            }
            if(num == n)
                break;
            level++;
            printf("\n");
        }
    }
    
    int search(int d)
    {
        int level = 0;
        int num = 0;
        while(1)
        {
            WORDS *p = head;
            while(p != NULL)
            {
                if(p->level == level)
                {
                    if(p->num == d)
                        return num+1;
                    num++;
                }
                p = p->next;
            }
            if(num == n)
                return -1;
            level++;
        }
    }
    
    void main()
    {
        printf("输入节点数量:");
        scanf("%d",&n);
        printf("输入3个小于%d的整数:",n);
        int a,b,c;
        scanf("%d %d %d",&a,&b,&c);
        createWords();
        sortNum();
        print();
        printf("输出排名:");
        printf("%d,%d,%d",search(a),search(b),search(c));
        system("pause");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题