为什么这个代码运行结果为空白

#include
#include
using namespace std;
struct LinkNode{
int val;
LinkNode* next;
};
LinkNode* CreateLinkList()
{
int n;
LinkNode * L,*head;//创建头结点
LinkNode *p;
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
head=L;
p=(LinkNode *)malloc(sizeof(LinkNode));
int data;
cin>>n>>data;
while (data) {
p->val=data;
head->next =p;
head=p;
if (getchar()=='\n')
break;
}

    head->next = NULL;
return head;

}
void PrintLinkList(LinkNode* head)
{
LinkNode* phead = head->next;
while (phead != NULL)
{
cout << phead->val << " ";
phead = phead->next;
}
}
int main()
{

LinkNode* L = CreateLinkList();
PrintLinkList(L);
return 0;

}

CreateLinkList函数中,while循环里,head一直在移动,最后返回的是链表尾,所以是空的。
你代码中的cin>>n>>data中的n完全没用。while循环中也没有申请新的空间。
修改后的代码运行结果如下:

img

代码修改如下:

#include <iostream>

using namespace std;
struct LinkNode {
    int val;
    LinkNode* next;
};
LinkNode* CreateLinkList()
{
    int i=0,n;
    LinkNode* L, * head;//创建头结点
    LinkNode* p;
    L = (LinkNode*)malloc(sizeof(LinkNode));
    L->next = NULL;
    head = L;
    
    int data;
    cin >> n ;
    
    while (i<n) {
        cin >> data;
        i++;
        p = (LinkNode*)malloc(sizeof(LinkNode));
        p->next = NULL;
        p->val = data;
        head->next = p;
        head = p;
        
    }

    //head->next = NULL;
    //return head;
    return L;
}
void PrintLinkList(LinkNode* head)
{
    LinkNode* phead = head->next;
    while (phead != NULL)
    {
        if(phead->next != NULL)
            cout << phead->val << " ";
        else
            cout << phead->val << endl;
        phead = phead->next;
    }
}
int main()
{
    LinkNode* L = CreateLinkList();
    PrintLinkList(L);
    return 0;
}

img

因为链表创建操作出现了错误,返回的是空的

希望对题主有所帮助!可以的话,帮忙点个采纳!