欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-27 13:38:17
...


经过了长长长的搜索过程,我终于把老师给的一个关于顺序表的代码运行通了
并且知道了如何在devc++中自定义头文件并且使用它
以下:
1.首先建一个项目,把主文件和头文件都放进去
如何在devc++中自定义头文件并使用它
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

项目长这样,以及运行完输出结果长这样:
如何在devc++中自定义头文件并使用它本次就这样了,等下次学到其中原理再来补充这篇博文,嘿嘿。