⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlist.h

📁 数据结构基础代码
💻 H
字号:
#include <process.h>
#include <iostream.h>
//预定义常量和类型
const True=1;
const False=0;
const oK=1;
const error=0;
const infeasible=-1;
const overflow =2;
const maxsize=100;
const list_int_size=100;
const listincrement=10;
const underflow=0;

//预定义类型
typedef struct{
	int *elem;
	int length;
	int listsize;
	int incrementsize;
}sqlist;

//初始化
void creatlist_sq(sqlist &l)
{
	int x,i;
	//构造一个最大容量为maxsize的顺序表l
	l.elem=new int[maxsize];	//为顺序表分配一个最大容量为maxsize的数组空间
	l.length=0;
	for(i=0;i<maxsize;i++)
	{
		cin>>x;
		l.elem[i]=x;
		l.length++;
		if(l.elem[i]==0)
			break;
	}
}

//输出线性表的所有元素
void outputlist_sq(sqlist &l)
{
	int i;
	for(i=0;i<maxsize,l.elem[i]!=0;i++)
	{
		cout<<l.elem[i]<<'\t';
	}
}

//求长度
int len_sq(sqlist l)
{
	int i,k=0;
	for(i=0;i<maxsize;i++)
	{
		if(l.elem[i]==0) break;
		if(l.elem[i]!=0)	k++;
	}
	return k;
}

//取元素
void getelem(sqlist l,int i)
{
	//在顺序表l中找到第i个位置的元素
	if(i<1||i>len_sq(l))	cout<<"您输入的位序不在线性内,请重新输入......";
	else cout<<l.elem[i-1];
}

	
//求前导元素
int priorelem_sq(sqlist l,int e)
{
	//在顺序表中查找元素e,若顺序表中包含元素
	//若元素e不是第一个元素,则返回它的前导元素,否则无意义
	int i=1;
	int *p=l.elem;
	while(i<=l.length && *p++!=e)	++i;
	if(i>1&&i<=l.length) return l.elem[i-2];
	else return 0;
}

//求后继元素
int nextelem_sq(sqlist l,int e)
{
	//在顺序表中查找元素e,若顺序表中包含元素
	//若元素e不是最后元素,则返回它的后继元素,否则无意义
	int i=1;
	int *p=l.elem;
	while(i<=l.length && *p++!=e)	++i;
	if(i<=l.length-1) return l.elem[i];
	else return 0;
}

//查找元素
int locateelem_sq(sqlist l,int e)
{
	//在顺序表中l中查找第一个与e相等的数据元素
	//若找到,则返回其在l中的位序,否则返回0
	int i=1;
	while(i<=l.length && l.elem[i]!=e)	++i;
	if(i<=l.length)	return i+1;
	else return 0;
}

//出错信息处理函数
void errorMessage(char *s)
{
	cout<<s<<endl;
	exit(1);
}


//插入元素
void listInsert_sq(sqlist &l,int i,int e)
{
	//在顺序表l的第i个元素之前插入新的元素e
	//i的合法值为1<=i<=l.length+1,若表中容量不足,则按该顺序表的预定义增量扩充
	if(i<1||i>l.length+1) errorMessage("i值不合法!");
	if(i>=1&&i<=len_sq(l))
	{
		for(int j=l.length-1;j>=i-1;j--)
			l.elem[j+1]=l.elem[j];
		l.elem[j+1]=e;
	}
	for(int k=0;k<l.length;k++)
	{
		cout<<l.elem[k]<<'\t';
	}
}	


//删除元素
int listdelete_sq(sqlist &l,int i)       //删除
{
	if(i<1||i>l.length)  return error;
	if (l.length==0)  return underflow; // 表空
	for (int j=i;j<l.length; ++j)        
  		//被删除元素之后的元素前移
	l.elem[j-1]=l.elem[j]; 
	--l.length;   //表长减1
	return oK; 
}
	
//判定一个线形表是否为空表
void  chargeempty_sq(sqlist l)    
{	
	if(l.length==0)
		cout<<"此表为空";
	else
		cout<<"此表非空";}

//置空一个线形表
void destroylist_sq(sqlist &l)   
{
	delete[]l.elem;
		l.listsize=0;
		l.length=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -