逆序链表后,在打印链表的时候最后一个结点出现了乱码

LNode * reverse(LNode *head,LNode *root){
   LNode *temp,*node;
   temp= head;
   while(temp!= NULL){
      node = (LNode*)malloc(sizeof(LNode));
      node->data= temp->data;
      node -> next = NULL;
      node->next = root;
      root = node;
      temp = temp->next;  
   }
   return root;
}

运行上面代码对链表进行逆序,结果出现乱码了,这是为什么啊

img

LNode *reverse(LNode *head) {
    LNode *prev = NULL;
    LNode *next = NULL;
    LNode *p = head;
    while (p) {
        next = p->next;
        p->next = prev;
        prev = p;
        p = next;
    }
    return prev;
}

申请的内存加1,多的那一个用来存放表头

LNode * reverse(LNode *head,LNode *root){
   LNode *temp,*node;
   temp= head;
   while(temp!= NULL){
      node = (LNode*)malloc(sizeof(LNode)+1);
      node->data= temp->data;
      node -> next = NULL;
      node->next = root;
      root = node;
      temp = temp->next;  
   }
   return root;
}

node -> next = NULL;
node->next = root;

你这个指针一会儿指空, 一会儿指root, 不错都怪了

应该是越界的缘故,读取到了未知的内存