#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循环中也没有申请新的空间。
修改后的代码运行结果如下:
代码修改如下:
#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;
}
因为链表创建操作出现了错误,返回的是空的
希望对题主有所帮助!可以的话,帮忙点个采纳!