c - 打印列表时的空格
问题描述
我不明白为什么会这样。我之前已经发生过几次这种情况,但我从未找到解决方案。当第一次输入“a”时,我得到以下信息:
一个
列表是: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");
}
有任何想法吗?:/
解决方案
推荐阅读
- r - 距离树以获得对人口结构的初步评估
- eclipse - 我必须在我的 Eclipse Web 项目中更改什么配置,以便 Tomcat 重定向 URL,而不需要任何指向项目 URL 的路径
- flutter - 收到错误“ParentDataWidget 使用不正确”。扑通扑通
- c# - 在我的嵌套 if 语句中我做错了什么吗?
- tabulator - 如何突出显示最大或最小数据?
- agda - 阿格达商店 Comonad
- python - curl --cacert vs python请求验证
- flutter - 在 Flutter 中保留状态的引用是否安全?
- c - Boehm GC 是否将 Win32 Fibers 堆栈识别为根?
- reactjs - 为什么蚂蚁设计抽屉不显示关闭图标?