顺序表——C语言

//头文件
#pragma once
#include
#include

typedef int data;

typedef struct vector
{
	data* arr;
	int size;
	int capacity;
}vector;

void Init(vector* v);

void destory(vector* v);

void checkcapacity(vector* v);

void pushback(vector* v,data x);

void popback(vector* v);

void pushfront(vector* v,data x);

void popfront(vector* v);

int find(vector* v, data x);

void print(vector v);

//在pos之前插入
void insert(vector* v, data x,int pos);

void erase(vector* v, int pos);
//函数文件
#include"vector.h"

void Init(vector* v)
{
	v->arr = (data*)malloc(sizeof(data) * 4);
	v->capacity = 4;
	v->size = 0;
}

void destory(vector* v)
{
	v->capacity = v->size = 0;
	free(v->arr);
}

void checkcapacity(vector* v)
{
	if (v->size == v->capacity)
	{
		int newcapacity = 2 * (v->capacity);
		data* new = (data*)realloc(v->arr,sizeof(data) * newcapacity);
		v->arr = new;
		v->capacity = newcapacity;
	}
}

void pushback(vector* v, data x)
{
	checkcapacity(v);
	v->arr[v->size] = x;
	v->size++;
}

void print(vector v)
{
	for (int i = 0; i < v.size; i++)
	{
		printf("%d ", v.arr[i]);
	}
	printf("\n");
}

void popback(vector* v)
{
	v->size--;
}

void pushfront(vector* v, data x)
{
	checkcapacity(v);
	for(int i = v->size; i > 0; i--)
	{
		v->arr[i] = v->arr[i-1];
	}
	v->arr[0] = x;
	v->size++;
}

void popfront(vector* v)
{
	for (int i = 1; i < v->size; i++)
	{
		v->arr[i - 1] = v->arr[i];
	}
	v->size--;
}

int find(vector* v, data x)
{
	for (int i = 0; i < v->size; i++)
	{
		if (x == v->arr[i])
		{
			return i;
		}
	}
	return -1;
}

void insert(vector* v, data x, int pos)
{
	checkcapacity(v);
	for (int i = v->size; i>pos ;i--)
	{
		v->arr[i] = v->arr[i - 1];
	}
	v->arr[pos] = x;
	v->size++;
}

void erase(vector* v, int pos)
{
	for (int i = pos; i < v->size-1; i++)
	{
		v->arr[i] = v->arr[i +1];
	}
	v->size--;
}

 

//测试文件
#include"vector.h"

void test1()
{
	vector v1;
	vector* pv1 = &v1;
	Init(pv1);
	pushback(pv1, 1);
	pushback(pv1, 2);
	pushback(pv1, 3);
	pushback(pv1, 4);
	pushback(pv1, 5);
	pushfront(pv1, 0);
	int pos = find(pv1, 3);
	erase(pv1, pos);
	print(v1);

	pos = find(pv1, 4);
	insert(pv1, 100, pos);
	print(v1);
}

int main()
{
	test1();
	return 0;
}

你可能感兴趣的:(c语言,算法,开发语言)