如何在devc++中自定义头文件并使用它


经过了长长长的搜索过程,我终于把老师给的一个关于顺序表的代码运行通了
并且知道了如何在devc++中自定义头文件并且使用它
以下:
1.首先建一个项目,把主文件和头文件都放进去
新建或者添加都行,新建记得要把文件改为头文件格式
2.如果文件内的代码没有错,那么直接开始运行就好。
或者是不建项目也行哇,两个源代码然后放在一个文件夹下,一会儿试试。
那么文件中代码要如何写才能不出错呢?
1.在主文件中,要加入#include “SqList.h”
2.在头文件中,要这样写:
#ifndef SQLIST_H
#define SQLIST_H
代码块
endif
这样就好,范例如下:

这个是主函数的模块

#include<stdio.h>
#include<stdlib.h>

#include"SqList.h"

int main()
{
	int i;
	ElemType e;
	SqList sq;
	InitList_Sq(sq);		/*初始化顺序表sq*/
	ListInsert_Sq(sq,1,1);	/*插入元素*/
	ListInsert_Sq(sq,2,2);
	ListInsert_Sq(sq,3,3);
	ListInsert_Sq(sq,4,4);
	ListInsert_Sq(sq,5,5);
	ListInsert_Sq(sq,6,6);
	printf("线性表:");ListTraverse_Sq(sq);
	printf("长度:%d\n",ListLength_Sq(sq));

	i=3;GetElem_Sq(sq,i,e);
	printf("第%d个元素:%d\n",i,e);
	e=5;
	printf("元素%d是第%d个元素\n",e,LocateElem_Sq(sq,e));
	i=4;printf("删除第%d个元素\n",i);
	ListDelete_Sq(sq,i,e);
	printf("线性表:");ListTraverse_Sq(sq);
	DestoryList_Sq(sq);
	system("pause");
	return 1; 
}

头文件:

#ifndef SQLIST_H
#define SQLIST_H
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LIST_INIT_SIZE 50
#include "SqList.h"

//顺序表操作函数的实现
typedef int ElemType; 

typedef struct 
{	ElemType *elem;		//存放顺序表元素,教材中使用了指针来表示顺序表的基地址,允许扩展 
	int listsize;							//在本处代码中使用了基本数组data,不允许扩展 
	int length;					//存放顺序表的长度
} SqList;	

int InitList_Sq(SqList &L)	/*初始化线性表*/
{
	L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
	if(!L.elem) return(-2);
	L.length=0;
	L.listsize=LIST_INIT_SIZE;
	return 1;
}

int DestoryList_Sq(SqList &L)
{
	if(L.elem!=NULL)
		free(L.elem);
	return 1;
}

int ListLength_Sq(SqList L)	/*求线性表长度*/
{
	return L.length;
}

int GetElem_Sq(SqList L,int i,ElemType &e)	/*求线性表中第i个元素*/
{
	if (i<1 || i>L.length)		/*无效的i值*/
		return 0;
	else
	{
		e=L.elem[i-1];
		return 1;
	}
}

int LocateElem_Sq(SqList L,ElemType e)	/*按值查找*/
{
	int i=0;
	while (L.elem[i]!=e)			/*查找值为x的第1个结点*/
		i++;	
	if (i>L.length) 
		return(0);					/*未找到*/
	else 
		return(i+1);
}

int ListInsert_Sq(SqList &L,ElemType e,int i) /*插入元素*/
{
	int j;
	if (i<1 || i>L.length+1)			/*无效的参数i*/
		return 0;
	for (j=L.length;j>i;j--)			/*将位置为i的结点及之后的结点后移*/
		L.elem[j]=L.elem[j-1];
	L.elem[i-1]=e;               	/*在位置i处放入x*/
	L.length++;                      	/*线性表长度增1*/
	return 1;
}

int ListDelete_Sq(SqList &L,ElemType &e,int i)	/*删除元素*/
{
	int j;
	if (i<1 || i>L.length)        	/*无效的参数i*/
		return 0;
	j=i-1;
	e=L.elem[i-1];
	for (j=i;j<L.length;j++)     	/*将位置为i的结点之后的结点前移*/
		L.elem[j-1]=L.elem[j];
	L.length--;                   	/*线性表长度减1*/
	return 1;
}

void ListTraverse_Sq(SqList L) /*输出线性表*/
{
	int i;
	for (i=1;i<=L.length;i++)
		printf("%d ",L.elem[i-1]);
	printf("\n");
}
#endif

项目长这样,以及运行完输出结果长这样:
在这里插入图片描述本次就这样了,等下次学到其中原理再来补充这篇博文,嘿嘿。
更新1
确实,其实只要把写的头文件和源代码放在一个文件夹就可以,不需要建项目。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

emmaing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值