c语言sqlist头文件,C语言实现顺序表的基本操作

数据结构

C语言实现顺序表的基本操作

2009-09-19 11:42:39| 分类: C语言实现数据结 |字号 订阅

头文件Sqlist1.h

#include

#include

#include

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define OVERFLOW 0

#define LIST_INIT_SIZE 10//线性表存储空间的初始分配量

#define LISTINCREMENT 2//线性表存储空间的分配增量

typedef int Status;

typedef int ElemType;

typedef struct Sqlist

{ ElemType *elem;//存储空间基址

int length;//当前长度

int listsize;//当前分配的存储容量

}Sqlist;

//常用函数

void InitList(Sqlist &L);//初始化线性表

Status ListInsert(Sqlist &L,int i,ElemType e);//向线性表中插入元素

void ListTraverse(Sqlist L,void(*visit)(ElemType &));//遍历L中的元素,并输出

void print1(ElemType &e);//输出元素

Status ListEmpty(Sqlist L);//判断表是否为空表

void ClearList(Sqlist &L);//将表重置为空表

int ListLength(Sqlist L);//返回L中元素的个数

Status GetElem(Sqlist L,int i,ElemType &e);//用e返回L中第i个元素的值

int LocateElem(Sqlist L,ElemType e,Status(* compare)(ElemType,ElemType));//返回L中第1个与e满足关系compare()数据关系的位序,如果这样的数据不存在刚返回值为了0

Status equal(ElemType c1,ElemType c2);//判断是否相等的函数

Status PriorElem(Sqlist L,ElemType cur_e,ElemType &pre_e);//若cur_e是L的数据元素,而且不是第一个,就用pre_e返回它的前驱S

Status NextElem(Sqlist L,ElemType cur_e,ElemType &next_e);//若cur_e是L的数据元素,而且不是最后一个,就用next_e返回它的后继

Status ListDelete(Sqlist &L,int i,ElemType &e);//删除L的第i个元素,并用e返回其值,L的长度减1

void MergeList(Sqlist La,Sqlist Lb,Sqlist &Lc);//归并la和lb得到新的顺序表lc,lc的元素也是按值非递减排列的

void InferList(Sqlist La,Sqlist Lb,Sqlist &Lc);

void DifferList(Sqlist La,Sqlist Lb,Sqlist &Lc);//实现两个集合的差集

函数文件function1.cpp

#include"Sqlist1.h"

#include

void InitList(Sqlist &L)//构造一个空的顺序线性表L

{ L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L.elem) //存储分配失败

exit(OVERFLOW);

L.length=0;//空表长度为了0

L.listsize=LIST_INIT_SIZE;//初始存储量

}

Status ListInsert(Sqlist &L,int i,ElemType e)//在L的第i个位置上插入新的数据元素e,L的长度加1

{ ElemType *newbase,*p,*q;

if(i<1||i>L.length+1) return ERROR;//i不合法

if(L.length==L.listsize)//当前存储空间已满,增加分配

{ newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

if(!newbase) //存储分配失败

exit(OVERFLOW);

L.elem=newbase;//新基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值