#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/* 函数结果状态代码*/
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
/* #define OVERFLOW -2 因为在math. h 中已定义OVERFLOW 的值为3,故去掉此行*/
typedef int Status; /* Status 是函数的类型,其值是函数结果状态代码,如OK 等*/
typedef int Boolean; /* Boolean 是布尔类型,其值是TRUE 或FALSE */
typedef int ElemType;/*实现一组整数的操作,将int 型特定义为通用的ElemType 类型名*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define LIST_INIT_SIZE 10 /* 线性表存储空间的初始分配量*/
#define LISTINCREMENT 2 /* 线性表存储空间的分配增量*/
typedef struct
{
ElemType *elem; /* 存储空间基址*/
int length;/* 当前长度*/
int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */
}SqList;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Status ListInit_Sq(SqList &L) /* 算法2. 3 */
{ /* 操作结果:构造一个空的顺序线性表*/
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW); /* 存储分配失败*/
L.length=0;/* 空表长度为0 */
L.listsize=LIST_INIT_SIZE;/* 初始存储容量*/
return OK;
}
Status ListInsert_Sq(SqList &L,int i,ElemType e) /* 算法2. 4 */
{ /* 初始条件:顺序线性表L 已存在,1≤i≤ListLength(L)+1 */
/* 操作结果:在L 中第i 个位置之前插入新的数据元素e,L 的长度加1 */
ElemType *newbase,*q,*p;
if(i<1||i>L.length+1) /* i 值不合法*/
return ERROR;
if(L.length>=L.listsize) /* 当前存储空间已满,增加分配*/
{
newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)
exit(OVERFLOW); /* 存储分配失败*/
L.elem=newbase; /* 新基址*/
L.listsize+=LISTINCREMENT;/* 增加存储容量*/
}
q=L.elem+i-1; /* q 为插入位置*/
for(p=L.elem+L.length-1;p>=q;--p) /* 插入位置及之后的元素右移*/
*(p+1)=*p;
*q=e;/* 插入e */
++L.length; /* 表长增1 */
return OK;
}
Status ListPrint_Sq(SqList L)
{ /* 初始条件:顺序线性表L 已存在*/
/* 操作结果:依次对L 的数据元素输出*/
int i;
for(i=0;i printf("%d ",L.elem[i]); printf("\n"); return OK; } Status PAIXU(SqList &L) { int i,j,temp; for(i=0;i for(j=i+1;j { if(L.elem[i]>L.elem[j]) { temp=L.elem[i]; L.elem[i]=L.elem[j]; L.elem[j]=temp; } } return OK; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void main() { SqList L; Status i; int j; ElemType t,e; char choose; /* 首先一定要初始化顺序表*/ i=ListInit_Sq(L); printf("请输入10个数(以空格分隔):\n"); if(i==1) /* 创建空表L 成功*/ for(j=1;j<=10;j++) /* 在表L 中插入10个元素 */ { cin>>i; i=ListInsert_Sq(L,j,i); } printf("您输入的10个数分别为:\n"); ListPrint_Sq(L);/*检验一下插入的结果,输出表L 的内容*/ PAIXU(L);/*排序*/ printf("排序后的结果如下:\n"); ListPrint_Sq(L);/*检验一下插入的结果,输出表L 的内容*/ }
一楼真猛,就为5分给楼主写这么长的程序!!顶了