目录
头文件(.h)
源文件(.cpp)
文件:文件头一般都会有该语句 #pragma once 预处理指令 防止该文件被重复多次使用
头文件:结构体的声明和函数声明
源文件:一般分为.cpp和test.cpp .cpp文件:函数的实现 test.cpp:一般为主函数测试代码
举例:
头文件:
#pragma once //预处理指令 防止该.h文件被重复多次使用
//实现对整形一维数组 元素的增删改查操作
//一维数组封装p->顺序表
//
//结构体设计
typedef struct SeqList{
int *element;//动态内存开辟
int size;//有效个数
int length;//记录数组总大小
}SeqList,*PList;
//函数声明
void Init(PList plist);//element size
bool IsFull(PList plist);//判满
bool Grow(PList plist);//1.5倍扩容
void AddValue(PList plist, int* value);//增加元素
void show(PList plist);//输出
void RemoveValue(PList plist, int value);//删除vlaue元素
int SearchValue(PList plist, int value);
//结构体设计
.cpp文件:
#include"array.h"
#include<assert.h>
#include<stdlib.h>
#include<stdio.h>
#define INIT 10
//<>系统变量路径stdio.h 只在系统路径中查找
//" " 双引号引入自定义头文件
//#include"stdio.h"->首先在用户路径中查找是否包含,若没找到便会在系统路径中查找
//源文件函数具体实现
void Init(PList plist) {
assert(plist != NULL);
plist->element = (int*)malloc(sizeof(int)*INIT);
assert(plist->element != NULL);
plist->size = 0;//有效数据个数
plist->length = INIT;
}
bool IsFull(PList plist){
assert(plist != NULL);
if (plist->size == plist->length) return true;
return false;
}
bool Grow(PList plist){
assert(plist != NULL);
int *p = (int*)realloc(plist->element, (plist->length + (plist->length >> 1))*sizeof(int));
assert(p != NULL);
plist->element = p;
plist->length = plist->length + (plist->length >> 1);
return true;
}
void AddValue(PList plist, int* value){
assert(plist != NULL);
if (IsFull(plist)){
Grow(plist);
}
plist->element[plist->size++] = *value;
}
void show(PList plist){
assert(plist != NULL);
for (int i = 0; i < plist->size; i++){
printf("%3d", plist->element[i]);
}
printf("\n");
}
void RemoveValue(PList plist, int value){//删除vlaue元素
assert(plist != NULL);
for (int i = 0; i < plist->size;){
if (value == (plist->element[i])) {
while (i < plist->size){
(plist->element[i]) = (plist->element[i + 1]);
i++;
}
(plist->size)--;
}
else i++;
}
};
int SearchValue(PList plist, int value){
assert(plist!=NULL);
for (int i = 0; i < plist->size; i++){
if ((plist->element[i]) == value){
return i;
}
}
}
test.cpp(测试):
#include"array.h"
#include<stdio.h>
int main() {
SeqList Plist = { 0,0, 10 };
PList plist = &Plist;
int value=0;
Init(plist);//element size
for (int i = 0; i < 20; i++){
AddValue(plist,&value);//增加元素
value++;
}
show(plist);//输出
RemoveValue(plist, 8);//删除vlaue元素
show(plist);
printf("%d", SearchValue(plist, 9));
}