数据结构——顺序表的基本操作

本文介绍了顺序表的基本操作,包括初始化、销毁、在前后端插入元素、显示表内容、删除元素、按位置插入、排序、获取长度、按值插入和搜索。还涉及了相关函数的实现,如SeqListInit、SeqListInsertByPos和SeqListSort等。
摘要由CSDN通过智能技术生成

顺序表的基本功能实现:

void SeqListInit(SeqList *plist);
void SeqListDestroy(SeqList *plist);
void SeqListPushBack(SeqList *plist, ElemType x);
void SeqListPushFront(SeqList *plist, ElemType x);
void SeqListShow(SeqList *plist);
void SeqListPopBack(SeqList *plist);
void SeqListClear(SeqList *plist);
bool SeqListInsertByPos(SeqList *plist, int pos, ElemType x);
void SeqListSort(SeqList *plist);
int SeqListLength(SeqList *plist);
void SeqListPopFront(SeqList *plist);
bool SeqListInsertByVal(SeqList *plist, ElemType x);
void SeqListSearch(SeqList plist, ElemType x);
void SeqListErase(SeqList
plist, ElemType pos);
bool _Inc(SeqList *plist, int new_capacity)

common.h

#ifndef _COMMON_H_
#define _COMMON_H_

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
#include<memory.h>
#include<vld.h>  //用于内存泄漏的检测

#define ElemType int
void Swap(ElemType *a, ElemType *b)
{
   
	ElemType tmp = *a;
	*a = *b;
	*b = tmp;
}

#endif /* _COMMON_H_ */

seqlist.h

#ifndef _SEQLIST_H_
#define _SEQLIST_H_

#include"Common.h"

#define SEQLIST_DEFAULT_SIZE 8

//定义顺序表的结构
typedef struct SeqList
{
   
	ElemType *base;
	size_t    capacity;
	size_t    size;
}SeqList;

void SeqListInit(SeqList *plist);
void SeqListDestroy(SeqList *plist);
void SeqListPushBack(SeqList *plist, ElemType x);
void SeqListPushFront(SeqList *plist, ElemType x);
void SeqListShow(SeqList *plist);

void SeqListPopBack(SeqList *plist);
void SeqListPopFront(SeqList *plist);
void SeqListClear(SeqList *plist);
bool SeqListInsertByPos(SeqList *plist, int pos, ElemType x);
bool SeqListInsertByVal(SeqList *plist, ElemType x);
void SeqListEraseByPos(SeqList *plist, int pos);
void SeqListEraseByVal(SeqList *plist, ElemType key);
void SeqListSort(SeqList *plist);

size_t SeqListLength(SeqList *plist);
size_t SeqListCapacity(SeqList *plist);

int SeqListFind(SeqList *plist, ElemType key);

void SeqListReverse(SeqList *plist);


bool _Inc(SeqList *plist, size_t new_capacity)
{
   
#if 0
	assert(plist != NULL && new_capacity > plist->capacity);
	ElemType *new_base = (ElemType*)realloc(plist->base, sizeof(ElemType) * new_capacity); //realloc
	if(new_base == NULL)
		return false;
	plist->base = new_base;
	plist->capacity = new_capacity;
	return true;
#endif

	assert(plist != NULL && new_capacity > plist->capacity);
	
	ElemType *new_base = (ElemType*)malloc(sizeof(ElemType) * new_capacity); //realloc
	if(new_base == NULL)
		return false;
	
	memcpy(new_base, plist->base, sizeof(ElemType)*(plist->capacity));

	free(plist->base);

	plist->base = new_base;
	plist->capacity = new_capacity;
	return true;
}

bool IsFull(SeqList *plist)
{
   
	assert
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值