数据结构作业1

更新时间:2023-11-16 10:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C 线性表

1. 初始化线性表L InitList(L) 2. 销毁线性表L DestoryList(L) 3. 清空线性表L ClearList(L) 4. 求线性表L的长度 ListLength(L) 5. 判断线性表L是否为空 IsEmpty(L)

6. 获取线性表L中的某个数据元素内容 GetElem(L,i,e) 7. 检索值为e的数据元素 LocateELem(L,e)

8. 在线性表L中插入一个数据元素 ListInsert(L,i,e) 9. 删除线性表L中第i个数据元素 ListDelete(L,i,e)

1. 初始化线性表L InitList(L)

Status InitList_Sq(SqList *L) //构造一个空的顺序表L {

L-> elem=new ElemType[MAXSIZE]; //为顺序表分配空间 if(! L-> elem) exit(OVERFLOW); //存储分配失败 L-> length=0; //空表长度为0 return OK; }

2. 销毁线性表L DestoryList(L) void DestroyList(SqList &L) {

if (L.elem) delete[]L.elem; //释放存储空间 }

3. 清空线性表L ClearList(L) void ClearList(SqList &L) {

L.length=0; //将线性表的长度置为0 }

4. 求线性表L的长度 ListLength(L) int GetLength(SqList L) {

return (L.length); }

5. 判断线性表L是否为空 IsEmpty(L) int IsEmpty(SqList L) {

if (L.length==0) return 1; else return 0; }

6. 获取线性表L中的某个数据元素内容 GetElem(L,i,e) //根据指定位置,获取相应位置数据元素的内容 int GetElem(SqList L,int i,ElemType &e) {

if (i<1||i>L.length) return ERROR;

//判断i值是否合理,若不合理,返回ERROR e=L.elem[i-1]; //第i-1的单元存储着第i个数据 return OK; }

7. 检索值为e的数据元素 LocateELem(L,e)

int LocateELem(SqList L,ElemType e) {

for (i=0;i< L.length;i++)

if (L.elem[i]==e) return i+1; return 0;

8. 在线性表L中插入一个数据元素 ListInsert(L,i,e)

Status ListInsert_Sq(SqList &L,int i ,ElemType e){

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

if(L.length==MAXSIZE) return ERROR; //当前存储空间已满 for(j=L.length-1;j>=i-1;j--)

L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移

L.elem[i-1]=e; //将新元素e放入第i个位置 ++L.length; //表长增1 return OK; }

9. 删除线性表L中第i个数据元素 ListDelete(L,i,e) Status ListDelete_Sq(SqList &L,int i,ElemType &e){ if((i<1)||(i>L.length)) return ERROR; //i值不合法

e=L.elem[i-1]; //将欲删除的元素保留在e中 for (j=i;j<=L.length-1;j++)

L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移 --L.length; //表长减1 return OK; }

顺序栈的表示

#define MAXSIZE 100 typedef struct

{

SElemType *base; SElemType *top; int stacksize;

}SqStack; 顺序栈初始化

Status InitStack( SqStack &S ) { }

判断顺序栈是否为空 bool StackEmpty( SqStack S ) {

if(S.top == S.base) return true; S.base =new SElemType[MAXSIZE]; if( !S.base ) return OVERFLOW; S.top = S.base;

S.stackSize = MAXSIZE; return OK;

else return false; }

求顺序栈的长度

int StackLength( SqStack S )

{ }

清空顺序栈

Status ClearStack( SqStack S ) { }

销毁顺序栈

Status DestroyStack( SqStack &S ) {

if( S.base ) { }

delete S.base ; S.stacksize = 0; S.base = S.top = NULL; if( S.base ) S.top = S.base; return OK;

return S.top – S.base;

return OK; }

顺序栈进栈

Status Push( SqStack &S, SElemType e)

{

if( S.top - S.base== S.stacksize ) // 栈满

return ERROR; *S.top++=e; return OK;

}

顺序栈出栈

Status Pop( SqStack &S, SElemType &e) {

if( S.top == S.base ) // 栈空 return ERROR; e= *--S.top; return OK;

}

取顺序栈栈顶元素

Status GetTop( SqStack S, SElemType &e) { if( S.top == S.base ) return ERROR; e = *( S.top – 1 ); return OK; }

C++

栈空 //

本文来源:https://www.bwwdw.com/article/x7hv.html

Top