没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
//函数结果状态码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
//Status是函数的类型,其值是函数结果的状态码
typedef int Status;
//定义数据类型
typedef int ElemType;
//----------线性表的动态分配顺序存储结构-------
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
//-----------基本操作--------------------------
Status InitList_sq(SqList *L); //初始化
void DestroyList_sq(SqList *L); //销毁
void ClearList_sq(SqList *L); //置空
Status ListEmpty_sq(SqList *L); //如果表L为空表返回TRUE,否则为FALSE
void ListInvert_sq(SqList *L); //倒置顺序表
Status ListLength_sq(SqList *L); //返回L中数据元素个数
void GetElem_sq(SqList *L,int i,ElemType *e); //用e返回i位置的元素
Status PriorElem_sq(SqList *L,int cur_e,ElemType *pre_e); //求前驱
#include <stdlib.h>
#include <memory.h>
//函数结果状态码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
//Status是函数的类型,其值是函数结果的状态码
typedef int Status;
//定义数据类型
typedef int ElemType;
//----------线性表的动态分配顺序存储结构-------
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
//-----------基本操作--------------------------
Status InitList_sq(SqList *L); //初始化
void DestroyList_sq(SqList *L); //销毁
void ClearList_sq(SqList *L); //置空
Status ListEmpty_sq(SqList *L); //如果表L为空表返回TRUE,否则为FALSE
void ListInvert_sq(SqList *L); //倒置顺序表
Status ListLength_sq(SqList *L); //返回L中数据元素个数
void GetElem_sq(SqList *L,int i,ElemType *e); //用e返回i位置的元素
Status PriorElem_sq(SqList *L,int cur_e,ElemType *pre_e); //求前驱
Status NextElem_sq(SqList *L,int cur_e,ElemType *next_e); //求后继
Status ListInsert_sq(SqList *L,int i,ElemType e); //插入
Status ListDelete_sq(SqList *L,int i,ElemType *e); //删除
Status ListTransver_sq(SqList *L); //依次对每个元素调用visit()
Status LocateElem_sq(SqList *L,ElemType e, Status (*compare)(ElemType *,ElemType *));//进行俩个元素的比较
Status MergeList(SqList *La,SqList *Lb,SqList *Lc); //La,Lb归并成Lc
Status ListAppend_sq(SqList *L,ElemType e);
//-----------顺序表基本操作的实现--------------
Status InitList_sq(SqList *L)
{
L->elem = (ElemType *)malloc(LIST_INIT_SIZE* sizeof(ElemType));
if(NULL==L->elem)
return OVERFLOW;
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}//InitList_sq
Status ListInsert_sq(SqList *L,int i,ElemType e)
{
if(i<1||i>L->length+1) return ERROR;
if(L->length>=L->listsize){
int *newbase;
newbase = (ElemType *)realloc(L->elem,
(L->listsize + LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
L->elem = newbase;
L->listsize += LISTINCREMENT;
}
Status ListInsert_sq(SqList *L,int i,ElemType e); //插入
Status ListDelete_sq(SqList *L,int i,ElemType *e); //删除
Status ListTransver_sq(SqList *L); //依次对每个元素调用visit()
Status LocateElem_sq(SqList *L,ElemType e, Status (*compare)(ElemType *,ElemType *));//进行俩个元素的比较
Status MergeList(SqList *La,SqList *Lb,SqList *Lc); //La,Lb归并成Lc
Status ListAppend_sq(SqList *L,ElemType e);
//-----------顺序表基本操作的实现--------------
Status InitList_sq(SqList *L)
{
L->elem = (ElemType *)malloc(LIST_INIT_SIZE* sizeof(ElemType));
if(NULL==L->elem)
return OVERFLOW;
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}//InitList_sq
Status ListInsert_sq(SqList *L,int i,ElemType e)
{
if(i<1||i>L->length+1) return ERROR;
if(L->length>=L->listsize){
int *newbase;
newbase = (ElemType *)realloc(L->elem,
(L->listsize + LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
L->elem = newbase;
L->listsize += LISTINCREMENT;
}
剩余10页未读,继续阅读
资源评论
dangyangzhimei1
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功