我只能查看输入的第一个元素。代码如下:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct d_list{
int data;
struct d_list *next;
struct d_list *prev;
}node;
//没有递归调用insert函数。
typedef node *list;
main(){
printf("Enter data(y/n)?");
char ch;
scanf("%s",&ch);
int n;
list head;
list temp;
list tail;
head=tail=temp=NULL;
if(ch=='y'||ch=='Y'){
printf("Enter data");
scanf("%d",&n);
temp=(list)malloc(sizeof(node));
temp->data=n;
temp->next=temp->prev=NULL;
head=temp;
tail=temp;
}
printf("Enter more data..?(y/n)");
scanf("%s",&ch);
while(ch=='y'||ch=='Y'){
printf("Enter data");
scanf("%d",&n);
temp=(list)malloc(sizeof(node));
temp->data=n;
temp->prev=tail;
temp->next=NULL;
tail->next=temp;
tail=temp;
printf("Enter more data..?(y/n)");
scanf("%s",&ch);
}
temp=head;
while(temp!=NULL){
printf("%d",temp->data);
temp=temp->next;
}
getch();
}
我想按照输入的顺序显示所有输入。这里有什么问题?
答案 0 :(得分:2)
您的代码逻辑是正确的,但错误如下:将scanf("%s",&ch);
设为scanf(" %c",&ch);
答案 1 :(得分:0)
尝试这个最简单的问题代码,我所做的更改,
更改了scanf(“%s”,&amp; ch); to scanf(“%c”,&amp; ch);
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
typedef struct d_list{
int data;
struct d_list *next;
struct d_list *prev;
}node;
typedef node *list;
int main()
{
char ch;
int n;
list head = NULL,temp = NULL,tail = NULL;
do{
printf("\nEnter data ?(y/n):\n");
scanf("%c",&ch);
if(ch=='n'||ch=='N')
break;
printf("\nEnter data :\n");
scanf_s("%d",&n);
temp=(list)malloc(sizeof(node));
temp->data=n;
temp->next=NULL;
if(head == NULL)
{
temp->prev=NULL;
head=temp;
}
else
{
temp->prev=tail;
tail->next=temp;
}
tail=temp;
}while(ch=='y'||ch == 'Y');
temp=head;
while(temp!=NULL){
printf("\n%d",temp->data);
temp=temp->next;
}
getch();
return 0;
}