level 12
知表不言
楼主
那为什么显示的还是X/Y
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define Y x
#define N c
struct Number
{
int num;
struct Number *next;
};
void GetNumber(struct Number **ptr);
void PrintNumbers(struct Number **ptr);
void FreeNumbers(struct Number **ptr);
int main()
{
char ch;
struct Number *ptr = NULL;
while(1)
{
printf("是否想存入数字(Y/N):");
do
{
scanf("%c", &ch);
fflush(stdin);
}while(ch != 'Y' && ch != 'N');
if(ch == 'Y')
{
GetNumber(&ptr);
}
else
{
break;
}
}
if(ptr != NULL)
{
printf("是否想查看数字(Y/N):");
do
{
scanf("%c", &ch);
fflush(stdin);
}while(ch != 'Y' && ch != 'N');
if(ch == 'Y')
{
PrintNumbers(&ptr);
}
FreeNumbers(&ptr);
}
printf("感谢您的使用,再见!\n");
return 0;
}
void GetNumber(struct Number **ptr)
{
struct Number *temp = *ptr, *new = (struct Number *)malloc(sizeof(struct Number));
if(new == NULL) //判断申请内存是否成功
{
perror("malloc");
exit(-1);
}
new->next = NULL;
printf("请输入数字:");
scanf("%d", &new->num);
fflush(stdin);
if((*ptr) == NULL)
{
(*ptr) = new;
}
else
{
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = new;
}
}
void PrintNumbers(struct Number **ptr)
{
struct Number *temp = *ptr;
do
{
printf("%d\t", temp->num);
temp = temp->next;
} while(temp != NULL);
putchar('\n');
}
void FreeNumbers(struct Number **ptr)
{
struct Number *temp;
do
{
temp = *ptr;
*ptr = (*ptr)->next;
free(temp);
} while(*ptr != NULL);
}

2017年07月16日 11点07分
1
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define Y x
#define N c
struct Number
{
int num;
struct Number *next;
};
void GetNumber(struct Number **ptr);
void PrintNumbers(struct Number **ptr);
void FreeNumbers(struct Number **ptr);
int main()
{
char ch;
struct Number *ptr = NULL;
while(1)
{
printf("是否想存入数字(Y/N):");
do
{
scanf("%c", &ch);
fflush(stdin);
}while(ch != 'Y' && ch != 'N');
if(ch == 'Y')
{
GetNumber(&ptr);
}
else
{
break;
}
}
if(ptr != NULL)
{
printf("是否想查看数字(Y/N):");
do
{
scanf("%c", &ch);
fflush(stdin);
}while(ch != 'Y' && ch != 'N');
if(ch == 'Y')
{
PrintNumbers(&ptr);
}
FreeNumbers(&ptr);
}
printf("感谢您的使用,再见!\n");
return 0;
}
void GetNumber(struct Number **ptr)
{
struct Number *temp = *ptr, *new = (struct Number *)malloc(sizeof(struct Number));
if(new == NULL) //判断申请内存是否成功
{
perror("malloc");
exit(-1);
}
new->next = NULL;
printf("请输入数字:");
scanf("%d", &new->num);
fflush(stdin);
if((*ptr) == NULL)
{
(*ptr) = new;
}
else
{
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = new;
}
}
void PrintNumbers(struct Number **ptr)
{
struct Number *temp = *ptr;
do
{
printf("%d\t", temp->num);
temp = temp->next;
} while(temp != NULL);
putchar('\n');
}
void FreeNumbers(struct Number **ptr)
{
struct Number *temp;
do
{
temp = *ptr;
*ptr = (*ptr)->next;
free(temp);
} while(*ptr != NULL);
}

