动态顺序表算法

本文档定义并实现了动态顺序表的数据结构,包括初始化、销毁、插入、删除、排序等操作,并提供了相应的辅助函数,如扩容、冒泡排序、插入排序、选择排序等。此外,还包含一个用于测试这些操作的菜单驱动程序。
摘要由CSDN通过智能技术生成
#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也发生了变化
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值