大致函数列表
#ifndef _ARRAY_H
#define _ARRAY_H
#define SIZE 1024
typedef int arr_t;
typedef struct array{
arr_t data[SIZE];
int len;
}arr_node, *arr_pnode;
//创建空间
arr_pnode create_arr(void);
//判断是否会溢出
int full(arr_pnode array);
//罗列
void show(arr_pnode array);
//增加
int insert(arr_pnode array, arr_t num, arr_t loc);
//删除
int removal(arr_pnode array, arr_t loc);
//修改
int change(arr_pnode array, arr_t num, arr_t loc);
//查找
int find_loc(arr_pnode array, arr_t loc);
int find_num(arr_pnode array, arr_t num);
//销毁
int destroy(arr_pnode *array);
#endif
1、表的创建
arr_pnode create_arr(void)
{
arr_pnode temp = (arr_pnode)malloc(sizeof(arr_node));
if(NULL == temp)
{
return NULL;
}
temp->len = 0;
return temp;
};
2、增
int insert(arr_pnode array, arr_t num, arr_t loc)
{
if(loc < 0 && loc > SIZE)
return -1;
if(loc > array->len)
return -2;
if(full(array) != 0 )
return 1;
for (int i = array->len-1; i > loc-1; i--) {
array->data[i+1] = array->data[i];
}
array->data[loc] = num;
array->len++;
return 0;
};
3、删
int removal(arr_pnode array, arr_t loc)
{
if(loc < 0 || loc > array->len-1)
return -1;
for (int i = loc; i < array->len-1; i++) {
array->data[i] = array->data[i+1];
}
array->data[array->len-1] = 0;
array->len--;
return 0;
};
4、改
int change(arr_pnode array, arr_t num, arr_t loc)
{
if(loc < 0 || loc > array->len-1)
return -1;
array->data[loc] = num;
return 0;
};
5、查(按位置查)(按内容查)
int find_loc(arr_pnode array, arr_t loc)
{
printf("-->%d\n",array->data[loc]);
return 0;
};
//查找内容
int find_num(arr_pnode array, arr_t num)
{
printf("-->");
for(int i = 0; i < array->len-1; i++)
{
if(array->data[i] == num)
{
printf("%d ",i);
}
}
puts("");
return 0;
};
6、判满(增前需判断)
int full(arr_pnode array)
{
if( array->len > (SIZE-1) )
return -1;
return 0;
};
7、销毁
int destory(arr_pnode *array)
{
free(*array);
*array = NULL;
return 0;
};
8、代码
#ifndef _ARRAY_H
#define _ARRAY_H
#define SIZE 1024
typedef int arr_t;
typedef struct array{
arr_t data[SIZE];
int len;
}arr_node, *arr_pnode;
//创建空间
arr_pnode create_arr(void);
//初始化
void start(arr_pnode array);
//判断是否会溢出
int full(arr_pnode array);
//罗列
void show(arr_pnode array);
//增加
int insert(arr_pnode array, arr_t num, arr_t loc);
//删除
int removal(arr_pnode array, arr_t loc);
//修改
int change(arr_pnode array, arr_t num, arr_t loc);
//查找
int find_loc(arr_pnode array, arr_t loc);
int find_num(arr_pnode array, arr_t num);
//销毁
int destroy(arr_pnode *array);
#endif
//-------------------------
#include <stdio.h>
#include <stdlib.h>
#include "array.h"
arr_pnode create_arr(void)
{
arr_pnode temp = (arr_pnode)malloc(sizeof(arr_node));
if(NULL == temp)
{
return NULL;
}
temp->len = 0;
return temp;
};
void start(arr_pnode array)
{
arr_t temp = SIZE;
while (--temp != 0) {
array->data[temp] = temp;
}
array->data[0] = 0;
array->len = SIZE-1;
};
void show(arr_pnode array)
{
for(int i = 0; i < array->len; i++ )
{
printf("%d,\n",array->data[i]);
}
};
//判满
int full(arr_pnode array)
{
if( array->len > (SIZE-1) )
return -1;
return 0;
};
//增加
int insert(arr_pnode array, arr_t num, arr_t loc)
{
if(loc < 0 && loc > SIZE)
return -1;
if(loc > array->len)
return -2;
if(full(array) != 0 )
return 1;
for (int i = array->len-1; i > loc-1; i--) {
array->data[i+1] = array->data[i];
}
array->data[loc] = num;
array->len++;
return 0;
};
//删除
int removal(arr_pnode array, arr_t loc)
{
if(loc < 0 || loc > array->len-1)
return -1;
for (int i = loc; i < array->len-1; i++) {
array->data[i] = array->data[i+1];
}
array->data[array->len-1] = 0;
array->len--;
return 0;
};
//修改
int change(arr_pnode array, arr_t num, arr_t loc)
{
if(loc < 0 || loc > array->len-1)
return -1;
array->data[loc] = num;
return 0;
};
//查找
int find_loc(arr_pnode array, arr_t loc)
{
printf("-->%d\n",array->data[loc]);
return 0;
};
int find_num(arr_pnode array, arr_t num)
{
printf("-->");
for(int i = 0; i < array->len-1; i++)
{
if(array->data[i] == num)
{
printf("%d ",i);
}
}
puts("");
return 0;
};
//销毁
int destory(arr_pnode *array)
{
free(*array);
*array = NULL;
return 0;
};