#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#define TYPE int
//设计数据结构
typedef struct Array
{
TYPE* base; //数组首地址
size_t size;//元素的个数
}Array;
//创建
Array* create_array(size_t len);
//销毁
void destory_array(Array* arr);
//访问
TYPE* access_array(Array* arr,int index);
//查找
int find_array(Array* arr,TYPE data);
//排序
void sort_array(Array* arr);
//遍历
void show_array(Array* arr);
//删除
bool delete_array(Array* arr,int index);
//插入
bool insert_array(Array* arr,int index,int data);
//-------------------以上为函数声明----------------
int main()//main函数用于测试函数是否正确
{
Array* arr=create_array(20);
for(int i=0;i<10;i++)
{
TYPE* p = access_array(arr,i);
if(NULL!=p)
*access_array(arr,i)=rand()%100;
}
show_array(arr);
// sort_array(arr);
delete_array(arr,1);
show_array(arr);
// int num ;
// scanf("%d",&num);
// printf("%d\n",find_array(arr,num)+1);
// destory_array(arr);
}
//---------------以下为实现函数--------------------
//创建
Array* create_array(size_t len)
{
Array* arr = malloc(sizeof(Array));
arr->base = malloc(sizeof(TYPE)*len);
arr->size = len;
return arr;
}
//销毁
void destory_array(Array* arr)
{
free(arr->base);
free(arr);
}
//访问
TYPE* access_array(Array* arr,int index)
{
if(index<0 || index>=arr->size) return NULL;
return arr ->base+index;
}
//查找
int find_array(Array* arr,TYPE data)
{
for(int i=0;i<arr->size;i++)
{
if(data == arr->base[i])
return i;
}
return -1;
}
//排序
void sort_array(Array* arr)
{
for(int i=0;i<arr->size;i++)
{
for(int j =i+1;j<arr->size;j++)
{
if(arr->base[j] < arr->base[i])
{
int temp = arr->base[i];
arr->base[i] = arr->base[j];
arr->base[j]=temp;
}
}
}
}
//遍历
void show_array(Array* arr)
{
for(int i=0;i<arr->size;i++)
{
printf("%d ",arr->base[i]);
}
printf("\n");
}
//删除
bool delete_array(Array* arr,int index)
{
if(index < 0 ||index > arr->size)
return false;
for(int i=index;i<arr->size-1;i++)
{
arr->base[i] =arr->base[i+1];
}
return true;
}
//插入=====================================
bool insert_array(Array* arr,int index,int data)
{
if(index < 0 ||index > arr->size)
return false;
for(int i=arr->size-1;i>index;i--)
{
arr->base[i] =arr->base[i+1];
}
arr->base[index]=data;
return true;
}
C语言 建立简单顺序表
最新推荐文章于 2024-04-25 14:51:26 发布