为什么删除链表后又倒着输出来了?

#include
#include
#include
using namespace std;
typedef struct node
{
struct node* next;
int number;
int data;
}NODE;
void node_add(NODE**,int,int);
void node_show(NODE*);
void node_delete(NODE**);
int main()
{
NODE* head = NULL;
node_add(&head,1,100);
node_add(&head,2,200);
node_add(&head,3,300);
node_show(head);
node_delete(&head);
node_show(head); //这里为什么又倒着输出了,不是删除了,应该输出随机数吗?
head = NULL;
return 0;
}
void node_add(NODE** head,int number,int data)
{
if(*head == NULL)
{
NODE* node = (NODE*)malloc(sizeof(NODE));
if(node == NULL)
{
cout<<"分配内存失败"< }
node->data = data;
node->number = number;
node->next = NULL;
head = node;
}
else
{
NODE
tem = *head;
while(tem->next)
{
tem = tem->next;
}

    NODE* node = (NODE*)malloc(sizeof(NODE));
    if(node == NULL)
    {
        cout<<"分配内存失败"<<endl;
    }
    node->data = data;
    node->number = number;
    node->next = NULL;
    tem->next = node;
}

}
void node_show(NODE* head)
{
while(head)
{
cout<number<<" "<data< head = head->next;
}
}
void node_delete(NODE** head)
{
NODE* tem = NULL;
while((*head)->next)
{
tem = (*head)->next;
free(*head);
*head = tem;
}
free(*head);
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^