我是在Xcode中操作的,在main.c的基础上又建立了linklist的C文件和头文件。不知为什么会报错
/
// linklist.h
#pragma once
#ifndef linklist_h
#define linklist_h
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#endif /* linklist_h */
struct Linknode
{
int num;
struct Linknode * next;
};
//初始化链表
struct Linknode *initLinkList(void);
//遍历链表
void foreach_LinkList(struct Linknode *pHeader);
//
// linklist.c
#include "linklist.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//初始化链表
struct Linknode *initlinklist(void)
{
//创建头节点
struct Linknode* pHeader=malloc(sizeof(struct Linknode));
if(pHeader==NULL)
{
return NULL;
}
pHeader->next=NULL;
//建立指向尾节点的指针,新节点出现后利用指针给为尾节点的next赋值
struct Linknode *pTail=pHeader;
int val=-1;
while(1)
{
printf("请初始化数据,若退出则按-1");
scanf("%d",&val);
if(val==-1)
{
break;
}
struct Linknode *newNode=malloc(sizeof(struct Linknode));
newNode->num=val;
newNode->next=NULL;
//利用指针给尾节点的next赋值
pTail->next=newNode;
//移动尾节点
pTail=newNode;
}
return pHeader;
}
void foreach_LinkList(struct Linknode *pHeader)
{
if(pHeader==NULL){
return;
}
struct Linknode*pCurrent=pHeader->next;
while(pCurrent !=NULL)
{
printf("%d",pCurrent->num);
pCurrent=pCurrent->next;
}
}
//
// main.c
#include "linklist.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void test(void)
{
//初始化链表
struct Linknode *pHeader=initLinkList();
//遍历链表
printf("遍历列表的结果为:\n");
foreach_LinkList(pHeader);
}
int main(int argc, const char * argv[]) {
test();
return 0;
}