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;//当前分配的存储容量
c语言struct头文件}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;//新基

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。