白牡丹秀色可餐 发表于 2020-4-8 18:29:56

单链表排列数字大小

本帖最后由 白牡丹秀色可餐 于 2020-4-8 18:31 编辑

输入4 3 1 -1
      2 -1
printNumber函数打印出来一直是4
这是为什么?

#include<stdio.h>
#include<stdlib.h>

struct Input
{
        int a;
        struct Input *next;
};
void addNumber(struct Input **count,int input);
void printNumber(struct Input *count);

void addNumber(struct Input**count,int input)
{
        struct Input *temp=NULL;
        struct Input *p=NULL;
        struct Input *d=NULL;
        static int i=0;

        i++;

        temp = (struct Input *)malloc(sizeof(struct Input));
        if(temp == NULL)
        {
                printf("%d OFF",i);
                exit(0);
        }
        temp->a = input;
        temp->next = NULL;

        if(i == 1)
        {
                *count = temp;
        }
        else
        {
                p = *count;
                        while((*count)->a <= input && (*count)->next != NULL)
                        {
                                p = *count;
                                *count = (*count)->next;
                        }
                        if((*count)->a > input)
                        {
                                d = p;
                                p = temp;
                                temp->next = d;
                        }
                        else
                        {
                                p->next = temp;
                        }
        }
}
void printNumber(struct Input *count)
{
        struct Input *p = NULL;
        p = count;
        do
        {
                printf("%d ",p->a);
                p = p->next;
        }while(p != NULL);
}
void main()
{
        struct Input *count = NULL;
        int input;
        printf("输入数值(-1结束):");
        while(1)
        {
                scanf_s("%d",&input);
                if(input == -1)
                {
                        break;
                }
                addNumber(&count,input);
        }
        printNumber(count);
        printf("\nthe number you want to add(-1 will over):");
        while(1)
        {
                scanf_s("%d",&input);
                if(input == -1)
                {
                        break;
                }
                addNumber(&count,input);
        }
        printf("the result after arranging:\n");
        printNumber(count);
}

howzyao 发表于 2020-4-8 22:20:50


struct Input
{
      int a;
      //struct Input *next;//这个是否是错误的写法?
      Input *next;//如此定义才对吧?指向Input结构
//的一个指针
};

howzyao 发表于 2020-4-8 22:24:09

void addNumber(struct Input **count,int input);
这个函数是不是想说添加一个Input对象?参数1为Input指针的指针,参数2为一个Input的成员数据?

howzyao 发表于 2020-4-8 22:29:31

这个结构没有初始化各个数据成员,是一个问题。
这个结构中指向自己的指针成员结束的标志是什么。开头的标志是什么。
换句话说:如果链表中只有自己首元素,这个指针成员的值是否该为NULL?或者当只有两个元素x1 x2时,第一个元素的指针成员可以指向第二个元素的地址,第二个元素的指针成员指向哪里呢?
页: [1]
查看完整版本: 单链表排列数字大小