数据结构与算法

 

//线性表的顺序存储
#include<stdio.h>
#include<malloc.h>

//定义一个结构体
struct Arr
{
	int* p;
	int max;
	int length;
};
//初始数组
void init_arr(struct Arr* arr, int max)
{
	arr->p = (int*)malloc(sizeof(int) * max);
	if (arr->p != NULL)
	{
		arr->length = 0;
		arr->max = 6;
		printf("%s\n", "success");
	}
	else
	{
		printf("error");
	}
}
//显示数组中所包含的元素
void show(struct Arr* arr)
{
	if (arr->length == 0 && arr->p != NULL)
	{
		printf("%s\n", "arr is empty");
	}
	else if (arr->length == 0 && arr->p == NULL)
	{
		printf("%s\n", "arr is destroried");
	}
	else
	{
		int i;
		for (i = 0; i < arr->length; i++)
		{
			printf("%d:%d\n", i + 1, arr->p[i]);
		}
	}
}
//显示数组第num个元素的值
void get(struct Arr* arr, int num)
{
	if (num <= 0 || num > arr->length)
	{
		printf("error");
	}
	else
	{
		printf("第%d个元素的值:%d\n", num, arr->p[num - 1]);
	}
}
//查找num在不在数组中
void locate(struct Arr* arr, int num)
{
	int i;
	for (i = 0; i < arr->length; i++)
	{
		if (arr->p[i] == num)
		{
			printf("%d位于第%d\n", num, i + 1);
			break;
		}
	}
	if (i == arr->length)
	{
		printf("not found\n");
	}
}
//在数组末尾添加一个元素
void add(struct Arr* arr, int num)
{
	if (arr->max == arr->length)
	{
		printf("%s\n", "error");
	}
	else
	{
		arr->p[arr->length] = num;
		arr->length++;
	}
}
//在数组第position位置插入元素num
void insert(struct Arr* arr, int position, int num)
{
	if (position <= 0 || position > arr->length + 1 || arr->length == arr->max)
	{
		printf("%s\n", "error");
	}
	else
	{
		int i;
		for (i = arr->length; i > position - 1; i--)
		{
			arr->p[i] = arr->p[i - 1];
		}
		arr->p[position - 1] = num;
		arr->length++;
	}
}
//删除数组第num个元素
void del(struct Arr* arr, int num)
{
	if (num <= 0 || num > arr->max)
	{
		printf("%s\n", "error");
	}
	else
	{
		if (num == arr->max)
		{
			arr->length--;
		}
		else
		{
			int i;
			for (i = num - 1; i < arr->length; i++)
			{
				arr->p[i] = arr->p[i + 1];
			}
			arr->length--;
		}
	}
}
//销毁数组
void destrory(struct Arr* arr)
{
	arr->p = NULL;
	free(arr->p);
	arr->length = 0;
	arr->max = 0;
}
//清空数组
void empty(struct Arr* arr)
{
	arr->length = 0;
}

void main()
{
	struct Arr arr;
	init_arr(&arr, 6);
}

 

posted @ 2022-04-05 14:14  Li_WenWu  阅读(32)  评论(0)    收藏  举报