有介绍一下是什么原因吗,用while循环能输出但是报错用for循环给出范围输出就不报错
head->next是一个无效指针,看看创建链表的时候怎么设置的。
每个节点初始化后,最好把next域赋于NULL
/*线性表子系统*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
typedef int DataType; /*定义DataType为int类型*/
typedef struct linknode /*单链表存储类型*/
{
DataType data; /*定义结点的数据域*/
struct linknode *next; /*定义结点的指针域*/
} LinkList;
LinkList *InitList()
{ /*初始化链表函数*/
LinkList *head;
head = (LinkList*)malloc(sizeof(LinkList)); /*动态分配一个结点空间*/
head->next = NULL;
return head; /*头结点L指针域为空,表示空链表*/
}
void CreateListH(LinkList* head, int n,int x[])
{ /*头插法建立链表函数*/
LinkList* s;
int i;
// printf("请输入%d个整数:", n);
for (i = 0; i < n; i++)
{
s = (LinkList*)malloc(sizeof(LinkList)); /*生成新结点*/
// scanf("%d", &s->data); /*读入新结点的数据域*/
s->data = x[i];
s->next = head->next; /*将新结点的指针域存放头结点的指针域*/
head->next = s; /*将新结点插入头结点之后*/
}
printf("建立链表操作成功!");
}
void DispList(LinkList* head)
{ /*显示输出链表函数*/
LinkList* p;
p = head ->next;
while (p != NULL) {
printf("%5d", p->data);
p = p ->next;
}
}
int main()
{
int x[] = { 54,89,13,9,79,54,54,70,54,7 };
int y[] = { 7,54,70,54,54,79,9,13,89,84 };
linknode nd;
linknode* head = &nd;
CreateListH(&nd,10,y);
DispList(&nd);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:1.VC++目录->包含目录:添加include目录
2.VC++目录->库目录:添加lib目录
3.C/C+±>常规->附加包含目录:添加include目录
4.链接器->常规->附加库目录:添加lib目录
5.链接器->输入->附加依赖项:添加 TestDLL.lib
上面的1和3都能将头文件的include目录加入到工程,但是区别在于,1中的包含目录会修改系统的Include宏的值,是全局的,而3只针对当前项目,对其它项目没有影响。2与4同理,2会影响全局的库,4只针对当前项目添加库。5是使用的lib文件夹中的依赖项。
参考:
https://www.cnblogs.com/ganxiang/p/13206704.html