我不明白为什么会这样。我以前已经发生过几次这种情况,而且从未解决过。 首次输入“ a”时,我得到以下信息:
a
列表是: 一个-> NULL 列表是:
-> a-> NULL
再输入一个字符,我得到:
b
列表为:
-> a-> b-> NULL 列表是:
-> -> a-> b-> NULL
这是源代码:
#include <stdio.h>
#include <stdlib.h>
struct listNode{
char data;
struct listNode *nextPtr;
};
typedef struct listNode ListNode;
typedef ListNode *ListNodePtr;
void insert(ListNodePtr *Node, char value);
void printList(ListNodePtr Node);
void main(){
ListNodePtr startPtr = NULL;
char s;
while(s != EOF){
scanf("%c", &s);
insert(&startPtr, s);
}
}
void insert(ListNodePtr *Node, char value){
ListNodePtr newPtr = malloc(sizeof(ListNode));
if(newPtr != NULL){
newPtr->data = value;
newPtr->nextPtr = NULL;
ListNodePtr previousPtr = NULL;
ListNodePtr currentPtr = *Node;
while(currentPtr != NULL && value > currentPtr->data){
previousPtr = currentPtr;
currentPtr = currentPtr->nextPtr;
}
if(previousPtr == NULL){
newPtr->nextPtr = *Node;
*Node = newPtr;
}
else{
previousPtr->nextPtr = newPtr;
newPtr->nextPtr = currentPtr;
}
printList(*Node);
}
else{
printf("%c not inserted: no memory available.");
}
}
void printList(ListNodePtr currentPtr){
puts("The list is: ");
while(currentPtr != NULL){
printf("%c --> ", currentPtr->data);
currentPtr = currentPtr->nextPtr;
}
puts("NULL");
}
有什么想法吗? :/