动态顺序表(可扩容)的基本操作
来源:互联网 发布:windows 10更新 编辑:程序博客网 时间:2024/05/17 05:59
头文件:
#define _CRT_SECURE_NO_WARNINGS 1#ifndef _STATICSEQLIST_H__#define _STATICSEQLIST_H__#include<stddef.h>#include<assert.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#define MAXSIZE 10#define CAPACITYSIZE 10typedef int DataType;//#define DataType inttypedef struct Node{ DataType *array; DataType size; DataType capacity;}SeqlistD,*PSeqlistD;void InitSeqlistD(PSeqlistD seq);void PushBack(PSeqlistD seq,DataType data);void PrintSeqlist(PSeqlistD seq);void PopBack(PSeqlistD seq);void PushFront(PSeqlistD seq,DataType data);void PopFront(PSeqlistD seq);void Insert(PSeqlistD seq,DataType pos,DataType data);void Erase(PSeqlistD seq,DataType pos);oid PopBack(PSeqlist seq);#endif //_STATICSEQLIST_H__
顺序表实现的代码
#include"SeqlistD.h"void InitSeqlistD(PSeqlistD seq) //初始化动态顺序表{ assert(seq); seq->array = (DataType*)malloc(CAPACITYSIZE*sizeof(DataType)); assert(seq->array); seq->size = 0; seq->capacity = CAPACITYSIZE;}int CheckCapacity(PSeqlistD seq) //检查容量{ assert(seq); if(seq->size ==seq->capacity) { DataType *ptmp = (DataType*)malloc((CAPACITYSIZE+seq->capacity)*sizeof(DataType)); if(ptmp ==NULL) { return 0; } seq->array = ptmp; seq->capacity += CAPACITYSIZE; } return 1;}void PushBack(PSeqlistD seq,DataType data) //后插动态顺序表{ assert(seq); if(CheckCapacity(seq)) { seq->array[seq->size++] = data; }}void PopBack(PSeqlistD seq){ assert(seq); if(seq->size == 0) { return; } seq->size--;}void PushFront(PSeqlistD seq,DataType data) //前插动态顺序表{ DataType idx = 0; assert(seq); if(CheckCapacity(seq)) { for(idx=seq->size; idx>0; --idx) { seq->array[idx] = seq->array[idx-1]; } seq->array[0] = data; }}void PopFront(PSeqlistD seq){ DataType idx = 0; assert(seq); for(; idx<seq->size; ++idx) { seq->array[idx] = seq->array[idx+1]; } seq->size--;}void Insert(PSeqlistD seq,DataType pos,DataType data) //动态顺序表任意位置插入{ DataType idx = 0; assert(seq); for(idx = seq->size-1; idx>=pos; --idx) { seq->array[idx+1] = seq->array[idx]; } seq->array[pos] = data; seq->size++;}void Erase(PSeqlistD seq,DataType pos){ DataType idx = 0; assert(seq); for(idx=pos; idx<seq->size-1; ++idx) { seq->array[idx] = seq->array[idx+1]; } seq->size--;}void PrintSeqlist(PSeqlistD seq) //打印顺序表{ int idx = 0; assert(seq); for(; idx<seq->size; ++idx) { printf("%d ",seq->array[idx]); } printf("\n");}
0 0
- 动态顺序表(可扩容)的基本操作
- 动态顺序表的基本操作
- 动态顺序表的基本操作
- 顺序表静态与动态实现及基本的操作(增删查改等)
- 顺序表的基本操作(C++)
- 顺序表的基本操作(new)
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 第一个例子跑通了
- Java基础学习笔记5
- void及void指针理解使用
- Nginx 配置
- Shiro搭建
- 动态顺序表(可扩容)的基本操作
- Linux下修改时间
- Fragment出现点击穿透事件,其他fragment中的控件点击被响应了
- Android实现动态添加tab并点击移动tab背景
- SpringMVC解析请求响应请求过程-源码分析
- GestureDetector检测所有手势触发节点及顺序
- 机器学习总结(六):K-means总结
- linux上yum镜像源切换
- 【Android原创】手势方向判断