#include <iostream>
using namespace std;
/*函数定义
*/
typedef int ElemType;
#define True 1
#define False 0
#define MAX_SIZE 20
typedef bool Type;
typedef struct {
ElemType *elem;//存储空间基地址
int length; //当前长度
int listsize;//当前分配的存储容量
}SqList;
/*全局定义
*/
SqList Ring_buffer;
/*函数声明
*/
Type InitList(int maxsize);
Type RangeCheck(int insert);
Type add(int insert, ElemType date);
Type Delete(int insert, ElemType &date);
void add(ElemType date);
Type isdexOF(ElemType date);
void Printf(void);
/*
*主函数
*/
int main(void) {
int a;
InitList(20);
add(20);
add(10);
add(30);
add(100);
add(1, 5);
Printf();
Delete(2,a);
Printf();
getchar();
return 0;
}
/*
*打印当前顺序表
*/
void Printf(void) {
cout << "Ring_Buffer=" << "{sizenum=" << Ring_buffer.length ;
for (int *i = &(Ring_buffer.elem[0]); i <= &(Ring_buffer.elem[Ring_buffer.length - 1]); i++) {
cout << ",{ " << *i << " }";
}
cout << "}"<<endl;
}
/*
*线性表初始化
*@return Type
*/
Type InitList(int maxsize) {
Ring_buffer.elem = (ElemType*)malloc(maxsize * sizeof(Ring_buffer));
if (!Ring_buffer.elem)return False;
Ring_buffer.length = 0;
Ring_buffer.listsize = maxsize;
return True;
}
/*
*线性表插入
*@param insert
*@param date
*/
Type add(int insert, ElemType date) {
ElemType *address;
if (!RangeCheck(insert))return False;
address = &Ring_buffer.elem[insert];
for (ElemType *p = &(Ring_buffer.elem[Ring_buffer.length - 1]); p >= address; p--) {
*(p + 1) = *(p);
}
*address = date;
Ring_buffer.length++;
return True;
}
/*
*添加元素
*/
void add(ElemType date) {
add(Ring_buffer.length, date);
}
/*
*线性查找某个元素
*if found date,return true
*/
Type isdexOF(ElemType date) {
for (int *i = &Ring_buffer.elem[0]; i <= &(Ring_buffer.elem[Ring_buffer.length - 1]); i++) {
if (date == *i)return True;
}
return False;
}
/*
*判断线性表是否为空
*/
Type Isempty() {
if (Ring_buffer.length != 0)
return False;
return True;
}
/*
*删除线性表第i个元素
*@return:type
*@param:insert
*@param:date
*/
Type Delete(int insert, ElemType &date) {
RangeCheck(insert);
ElemType *address;
address = &(Ring_buffer.elem[insert]);
date = *address;
for (address; address <= &(Ring_buffer.elem[Ring_buffer.length - 1]); address++) {
*(address) = *(address + 1);
}
Ring_buffer.length--;
return True;
}
/*
*判断当前操作是否合法
*@param insert
*/
Type RangeCheck(int insert) {
if (insert >=MAX_SIZE) {
cout << "当前操作位置:" << insert << "操作异常,数据溢出" << endl;
return False;
}
if (insert >= 0 && insert <= Ring_buffer.length) {
return True;
}
return False;
}
列表项插入、删除及查找算法
最新推荐文章于 2020-04-10 14:29:48 发布
本文深入探讨了列表数据结构中常见的插入、删除和查找算法,包括它们的时间复杂度分析,以及在不同场景下如何选择合适的操作策略。通过对这些基本操作的理解,可以提升在实际编程中处理列表数据的效率。
摘要由CSDN通过智能技术生成