#ifndef __SEQLIST_D_H__ //条件编译
#define __SEQLIST_D_H__
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#define INIT_SIZE 2
#define ADD_SIZE 3
typedef int DataType;
typedef struct Seqlist
{
DataType *data;
int size; //当前空间存储的元素个数
int capacity; //当前空间所能存储的最大容量
}Seqlist,*pSeqlist;
void InitSeqlist(pSeqlist pSeq);
void DestorySeqlist(pSeqlist pSeq);
void PushBack(pSeqlist pSeq,DataType x);
void PopBack(pSeqlist pSeq);
void PushFront(pSeqlist pSeq,DataType x);
void PopFront(pSeqlist pSeq);
void Remove(pSeqlist pSeq,DataType x);
void RemoveAll(pSeqlist pSeq,DataType x);
void BubbleSort(pSeqlist pSeq);
void InsertSort(pSeqlist pSeq);
void SelectSort(pSeqlist pSeq);
int BinarySearch(pSeqlist pSeq,DataType x);
void Erase(pSeqlist pSeq,int pos);
void PrintSeqlist(pSeqlist pSeq);
#endif //SEQLIST_D_H__
#include"seqlist_d.h"
void InitSeqlist(pSeqlist pSeq)
{
pSeq->data = (DataType *)malloc(INIT_SIZE*sizeof(DataType));
if (pSeq->data == NULL)
{
printf("out of memory\n");
exit(1);
}
pSeq->size = 0;
pSeq->capacity = INIT_SIZE; //将容量置为当前空间所能存储的最大值
}
void DestorySeqlist(pSeqlist pSeq)
{
free(pSeq->data);
pSeq->data = NULL;
pSeq->size = 0;
pSeq->capacity = 0;
}
void CheckCapacity(pSeqlist pSeq) //查看当前空间是否已满
{
assert(pSeq);
if (pSeq->size == pSeq->capacity) //如果满了则进行扩容
{
DataType *tmp = NULL;
//扩容,注意这时capacity也发生了变化
动态顺序表算法
最新推荐文章于 2019-04-02 12:25:11 发布
本文档定义并实现了动态顺序表的数据结构,包括初始化、销毁、插入、删除、排序等操作,并提供了相应的辅助函数,如扩容、冒泡排序、插入排序、选择排序等。此外,还包含一个用于测试这些操作的菜单驱动程序。
摘要由CSDN通过智能技术生成