如何在devc++中自定义头文件并使用它
程序员文章站
2022-05-27 13:38:17
...
一
经过了长长长的搜索过程,我终于把老师给的一个关于顺序表的代码运行通了
并且知道了如何在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个穴位,就能打败“乳腺增生”
推荐阅读