有关顺序表的操作

1.main函数

#include"SeqList.h"
void TestSeqList()
{
	SeqList seqlist;   //seqList这个变量并没有初始化
	SeqListInit(&seqlist);
	//要传的是地址
	/*
	原因:
	(1)如果要初始化的话,肯定要改变他们的值,
	如果要改变值的话,那么就只能传递指针了,不然只是一份临时拷贝,
	实际上并没有改变
	(2)传递的话,最好还是穿指针,因为传结构体不知道需要多少空间,
	相比之下,还是指针的所占的空间小一点。指针比结构体大小要小
	*/

	//尾插
	SeqListPushBack(&seqlist,1);
	SeqListPushBack(&seqlist,2);
	SeqListPushBack(&seqlist,3);
	SeqListPushBack(&seqlist,4);
	SeqListPrint(&seqlist);//这里是打印,这一步的打印结果应该为1,2,3,4;

	//头插
	SeqListPushFront(&seqlist, 10);
	SeqListPushFront(&seqlist, 20);
	SeqListPushFront(&seqlist, 30);//这一次打印的结果是30,20,10,1,2,3,4;
	SeqListPrint(&seqlist);

	SeqListInsert(&seqlist, 4, 100);
	SeqListPrint(&seqlist);

	//释放
	SeqListDestroy(&seqlist);
}

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

2.SeqList.h

#pragma once//包含头文件只包含一次

typedef struct SeqList
{
	int *array;     //记录数据存放位置
	int capacity;   //记录总容量
	int size;       //记录已有数据的个数
}SeqList;
//为结构体起一个别名
//typedef struct SeqList SeqList;
void SeqListInit(SeqList* seq);
void SeqListDestroy(SeqList* seq);
void SeqListPushFront(SeqList* seq, int val);
void SeqListPushBack(SeqList* seq, int val);
void SeqListPrint(SeqList* seq);
//根据下标做插入
void SeqListInsert(SeqList* seq, int index, int val);

3.SeqList.c

#include"SeqList.h"
#include<stdio.h>
#include<malloc.h>
#define DEFAULT_CAPACITY (16)
void SeqListInit(SeqList* seq)
{
	//申请空间
	//记录容量
	//size =0;
	seq->array = (int*)malloc(sizeof(int) * DEFAULT_CAPACITY);
	seq->capacity = DEFAULT_CAPACITY;
	seq->size = 0;
}
void SeqListDestroy(SeqList* seq)
{
	free(seq->array);
	seq->capacity = 0;
	seq->size = 0;
}
void SeqListPushFront(SeqList* seq, int val)
{
	for (int i = seq->size - 1; i >= 0; i--)
	{
		seq->array[i + 1] = seq->array[i];
	}
	seq->array[0] = val;
	seq->size++;
}
void SeqListPushBack(SeqList* seq, int val)
{
	//先不考虑放不下的问题
	seq->array[seq->size] = val;
	seq->size++;
}
//根据下标做插入
void SeqListInsert(SeqList* seq, int index, int val)
{
	//首先判断下表的合法性
	if (index<0 || index>seq->size)
	{
		printf("输入下标非法,请重新输入\n");
	}
	for (int i = seq->size; i>index; i--)
	{
		seq->array[i] = seq->array[i-1];
	}
	seq->array[index] = val;
	seq->size++;
}
void SeqListPrint(SeqList* seq)
{
	for (int i = 0; i < seq->size; i++)
	{
		printf("%d ", seq->array[i]);
	}
	printf("\n");
}
发布了39 篇原创文章 · 获赞 37 · 访问量 1969

猜你喜欢

转载自blog.csdn.net/weixin_43831728/article/details/103100832
今日推荐