首页 > 解决方案 > 打印列表时的空格

问题描述

我不明白为什么会这样。我之前已经发生过几次这种情况,但我从未找到解决方案。当第一次输入“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");
}

有任何想法吗?:/

标签: clist

解决方案


推荐阅读