线性表的标准模板
来源:互联网 发布:内部链接优化注意问题 编辑:程序博客网 时间:2024/06/05 01:57
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LISTINCREASMENT 100 /*每次分配元素的个数*/
#define LISTSIZE 10 /*顺序存储的最大个数*/
#define OVERFLOW -1
#define OK 1
typedef int ElemType;
typedef struct /*顺序表元素的的定义*/
{
ElemType * elem;
int length;
int listsize;
} Sqlist;
int SqInitial(Sqlist &L) /*初始化线性表*/
{
L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));
if (! L.elem) exit(OVERFLOW); //存储分配失败
L.length=0;
L.listsize=LISTSIZE;
return OK;
}
int ListInsert(Sqlist &L,int i,ElemType e) /*插入元素*/
{
if(i<1|| i > L.length+1) printf("ERROR!");
if(L.length>=L.listsize)
{
ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)
*sizeof(ElemType));
if(!newbase) return OVERFLOW;// 当前存储空间已满
L.elem=newbase;
L.listsize+=LISTINCREASMENT; /*表的容量不足分配内存*/
}
ElemType *q=&(L.elem[i-1]);
ElemType *p;
for(p=&(L.elem[L.length-1]); p>=q; --p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
void ListDelete(Sqlist &L,int i,ElemType &e) //删除线性表中第i个位置上的元素
{
if(i<1||i>L.length) printf("ERROR!");
else
{
e=L.elem[i-1];
for(;i<L.length;i++)
{
L.elem[i-1]=L.elem[i];
}
L.length--;
}
}
ElemType GetElem(Sqlist &L,int i)
{
if(i<1||i>L.length) printf("ERROR!");
else
{
return L.elem[i-1];
}
}
- 线性表的标准模板
- C++ 线性表模板的使用
- 模板链式线性表
- 堆的标准模板
- 线性筛μ的模板
- [数据结构]线性表之顺序表的类模板实现
- [数据结构]线性表之单链表的类模板实现
- C++模板类线性表的实现与测试
- 线性表的顺序表示和实现模板
- 线性表类模板实现
- {模板}线性筛法求素数表
- C++的标准模板库
- 标准的make file 模板
- jQuery标准的AJAX模板
- 线性筛法 与 线性求欧拉函数 的计算模板
- 线性算术的C++模板库 Eigen
- 几个线性筛的模板……
- 标准模板
- NIO(二)——SELECT
- 使用Idea 打包发布配置流程(一)
- 重新安装sqlserver报错
- 猜猜这些都是谁的歌?
- oracle SQL笔记
- 线性表的标准模板
- jpa的单项一对多,双向一对多
- rt_thread igmp设置
- 基于注解的Spring多数据源配置和使用
- android圆形ImageView之CircleImageView
- HDU_【2017 Multi-University Training Contest 1】———1006 Function
- 林音博客
- js错误与调试
- Sqlite-Sqlite3中的数据类型