📄 sqlist.h
字号:
#include "iostream.h"
const OK=1;
const ERROR=0;
const TRUE=1;
const FALSE=0;
const OVERFLOW=-1;
const UNDERFLOW=-2;
const MAXSIZE=10;
typedef struct{
int *elem;
int len;
int listsize;
}sqlist;
void Initlist_sq(sqlist &L,int maxsize=MAXSIZE)
//按需动态分配一个存储区域,设其当前长度为0;初始化操作
{
L.elem=new int[maxsize];
L.len=0;
L.listsize=maxsize;
} //初始化线性表
void create_sq(sqlist &L)
{
int i=1,x;
L.elem=new int[MAXSIZE];
L.len=0;
L.listsize=MAXSIZE;
cin>>x;
while(x!=0){
L.elem[i++]=x;
++L.len;
cin>>x;
if(L.len>L.listsize) cout<<"表已满!"<<endl;
}
}
int Listlength_sq(sqlist &L)
{ return L.len; } //求线性表的长度
int GetElem_sq(sqlist L,int i,int e)
{
if(i<1||i>L.len) return ERROR;
else
{ e=L.elem[i];return e; } //取线性表的元素
}
int PirorElem_sq(sqlist L,int i)
{
if(i<=1||i>L.len) return ERROR;
else return L.elem[i-1]; //取前驱
}
int NextElem_sq(sqlist L,int i)
{
if(i<1||i>=L.len) return ERROR;
else return L.elem[i+1]; //取后继
}
int LocateElem_sq(sqlist L,int e)
{
int i=1;
int *p=L.elem;
while(i<=L.len && *p++!=e) ++i;
if(i<=L.len) return i;
else return 0;
/*for(int i=0;i<L.len;i++)
if(L.elem[i]==e) return i+1;
return 0;*/ //查找线性表中元素的位置
}
int ListInsert_sq(sqlist &L, int i,int e)
{
if(i<1||i>L.len+1) return ERROR;
if(L.len>=MAXSIZE) return OVERFLOW;
for(int j=L.len-1;j>i;--j)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
++L.len;
return OK; //在线性表中插入元素
}
int ListDelete_sq(sqlist &L,int i)
{
if(i<1||i>L.len) return ERROR;
if(L.len==0) return UNDERFLOW;
for(int j=i;j<L.len;++j)
L.elem[j-1]=L.elem[j];
--L.len;
return OK; //删除线性表的元素
}
void ListEmpty_sq(sqlist L)
{ if(L.len==0) cout<<"此线性表为空!";
else cout<<"此线性表不为空!"; //判定线性表是否为空
}
void ClearList_sq(sqlist &L)
{
delete[]L.elem;
L.len=0;
L.listsize=0;//将线性表置空
}
PrintElem_sq(sqlist &L)
{
for(int i=1;i<=L.len;i++)
cout<<L.elem[i]<<'\n';
cout<<endl;}
/*void DelExtralNOde(sqlist &L)
{
L_len=Listlength_sq(L);i=1;
while(i<=L_len)
j=i+1;aj=Getelem(L,j);
if(aj!=ai) }*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -