#include
typedef int ElemType;
typedef struct NODE {
ElemType data; // 数据元素
struct NODE* next; // 指向下一个节点
}LNode, * LinkList;
LinkList createList() // 在本函数内 建立链式线性表、读入序列的个数、读入每个元素
{
int n;
scanf_s("%d", &n);
LinkList p, q;
LinkList a = (LinkList)malloc(sizeof(LNode));
p = a;
a->next = NULL;
for (int i = 0; i < n; i++) {
q = (LinkList)malloc(sizeof(LNode));
scanf_s("%d", &(p->data));
p->next = q;
p = q;
}
p->next = NULL;
return a;
}
int main()
{
LinkList a;
a = createList();
LinkList p1;
p1 = a->next;
//测试输出结果
while (p1)
{
printf("a = %d\n", p1->data);
p1 = p1->next;
}
printf("\n");
}
###### 哪位小伙伴帮忙看看!!!为啥链表尾插法输出结果会带有地址?
###### 运行结果及报错内容
q = (LinkList)malloc(sizeof(LNode));
scanf_s("%d", &(p->data));
你这里输入到p的节点去了,应该输入q的节点啊。写错啦
你现在相当于头节点和倒数第二个节点的data域输入了数据,最后一个节点没有输入数据,默认是随机值
你没有从头节点开始打印,是从第一个节点开始打印的,所以打印了后两个数据和一个随机值
改正方法和楼主回答一样
第19行:scanf_s("%d", &(q->data)); //scanf_s("%d", &(p->data));