打印列表时的空格

时间:2019-07-03 09:24:09

标签: c list

我不明白为什么会这样。我以前已经发生过几次这种情况,而且从未解决过。 首次输入“ 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");
}

有什么想法吗? :/

0 个答案:

没有答案