.h是声明函数和变量使用的,再建立一个.c文件,把函数定义放在里面,同时包含.h文件,
.h文件:
#include
#include
#include
typedef structSingleNode
{
ElemType data;
structSingleNode *next;
}SingleLinkedList,*Linklist;//定义单链表结点的结构体
void ListInitialize(SingleLinkedList **head);
int ListLength(SingleLikedList *head);
int ListGet(SingleLikedList *head,int i,ElemType *x);
.c文件:
#include
#include
#include
#include
void ListInitialize(SingleLinkedList **head)
{
if((*head=(SingleLikedList *)malloc(sizeof(SingleLikedList)))==NULL)
exit(1);
(*head)->next=NULL;
}//单链表初始化
int ListLength(SingleLikedList *head)
{
SingleLikedList *p=head;
int size=0;
while(p->next!=NULL)
{
p=p->next;
size++;
}
return size;
}//求线性表长度
int ListGet(SingleLikedList *head,int i,ElemType *x)
{
SingleLikedList *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&j {
p=p->next;
j++;
}
if(j!=i)
{
printf("取元素位置参数错!");
return 0;
}
*x=p->data;
return 1;
}//取数据元素
不讨论你写的这个代码正确性。
如果你要把这些定义和函数做为头文件,导入到其他文件中,就能引用。
可以把该文件和你要导入主体文件放在一起。
然后导入的时候写 #include "文件名.后缀名",这样编译的时候会在源文件目录中找你这个导入的文件。
如果写#include <文件名.后缀名> 那么文件必须放在文件目录中,文件目录是由用户环境配置时设定的。
后缀名不是必须.h,就算是同样的.c文件也一样可以导入。
另外头文件里如果写了include,那么也会连带一起导入其他文件。
把代码直接保存在同一个目录下的LinkedList.h中
LinkedList.h的内容只有:
typedef structSingleNode {
ElemType data;
structSingleNode *next;
} SingleLinkedList,*Linklist;
//定义单链表结点的结构体
void ListInitialize(SingleLinkedList **head)
{
if((*head=(SingleLikedList *)malloc(sizeof(SingleLikedList)))==NULL) exit(1); //取数据元素
(*head)->next=NULL;
}
//单链表初始化
int ListLength(SingleLikedList *head)
{
SingleLikedList *p=head;
int size=0;
while(p->next!=NULL) {
p=p->next;
size++;
}
return size;
}
//求线性表长度
int ListGet(SingleLikedList *head,int i,ElemType *x)
{
SingleLikedList *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&j p=p->next;
j++;
}
if(j!=i) {
printf("取元素位置参数错!");
return 0;
} *x=p->data;
return 1;
}
然后代码就
#include"LinkedList.h"
太乱了。多看书。
给你个参考。
原因有二:
一、跟踪难度大。如果工程小,跟踪其变化没有什么难度,如果工程很大,包含这个头文件的文件都有可能修改其值,出了问题不好排查。
二、c主要还是用于嵌入式,与硬件有关。许多嵌入式系统的内存不想电脑那么大,如果在头文件中声明全局变量,那么所有引用该头文件的文件都将为此变量非配内存,这样降低了内存的利用率,有时几K就是致命的。