#include<stdio.h>
#include<stdlib.h>
struct Node
{
char x;
struct Node *next;
};
void addL(struct Node **head)
{
struct Node *node;
static struct Node *tail;
node=(struct Node*)malloc(sizeof(struct Node));
getInput(node);
if(*head!=NULL)
{
tail->next=node;
node->next=NULL;
}
else
{
*head=node;
node->next=NULL;
}
tail=node;
};
getInput(struct Node *node)
{
scanf("%c",&node->x);
};
void printL(struct Node*head)
{
struct Node *node;
node=head;
while(node!=NULL)
{
printf("%c",node->x);
node=node->next;
}
};
void releaseL(struct Node *head)
{
struct Node *temp;
while(head!=NULL)
{
temp=head->next;
free(head);
head=temp;
}
};
int main(void)
{
struct Node *head=NULL;
int i;
for(i=0;i<6;i++)
addL(&head);
printL(head);
releaseL(head);
return 0;
}
程序要求是:输入字符a至f,按输入字符顺序建立一个字符结点(每个结点寸一个字符)的单向链表,输出该链表,并释放空间。
代码存在问题:在运行过程中,循环6次,只能输入3个字符;循环12次才能得到结果。
请问各位,是什么原因导致这一结果,那么该如何改正呢?
感谢各位!