📄 sx.h
字号:
#include<malloc.h>
#include<math.h>
#include<process.h>
#include<iostream.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;
typedef int Boolean;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList(SqList &L,int n)
{
L.elem = new ElemType[LIST_INIT_SIZE];
if (!L.elem) return OVERFLOW;
L.length = n;
L.listsize = LIST_INIT_SIZE;
for(int i=0;i<n;++i)
{
cout<<"请输入第"<<i+1<<"个数:";
cin>>L.elem[i];
cout<<endl;
}
return OK;
}
void Print(SqList &L)
{
for(int i=0;i<L.length;++i)
cout<<L.elem[i]<<" ";
cout<<endl;
}
void MergeList(SqList La,SqList Lb,SqList &Lc)
{ // 另一种合并线性表的方法(根据算法2.7下的要求修改算法2.7)
if(!Lc.elem)
exit(OVERFLOW);
int k=0,i,j;
for( i=0;i<La.length;++i)
for( j=0;j<Lb.length;++j)
if(La.elem[i]==Lb.elem[j])
{
Lc.elem[k]=Lb.elem[j];
++k;
break;
}
Lc.length=k+1;
}
Status ListDelete(SqList &L,int i,ElemType &e) // 算法2.5
{ // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)
// 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
ElemType *p,*q;
if(i<1||i>L.length) // i值不合法
return ERROR;
p=L.elem+i-1; // p为被删除元素的位置
e=*p; // 被删除元素的值赋给e
q=L.elem+L.length-1; // 表尾元素的位置
for(++p;p<=q;++p) // 被删除元素之后的元素左移
*(p-1)=*p;
L.length--; // 表长减1
return OK;
}
void Deverse(SqList &L)
{
int max,min;
for(int i=0;i<L.length;++i)
{
min=L.elem[i];
for(int j=i+1;j<L.length;++j)
if(min>L.elem[j])
{
max=min;
min=L.elem[j];
L.elem[j]=max;
}
L.elem[i]=min;
}
}
void DelSame(SqList &L)
{
int y;
for(int i=L.length;i>=0;--i)
if(L.elem[i]==L.elem[i-1])
ListDelete(L,i,y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -