用C++建立一个线性表,输入10个数,并按从小到大显示出来

2024-11-30 02:37:36
推荐回答(2个)
回答1:

#include

#include 

#include 

#include /* malloc()等*/ 

#include /* INT_MAX 等*/ 

#include /* EOF(=^Z 或F6),NULL */ 

#include /* atoi() */ 

#include /* eof() */ 

#include /* floor(),ceil(),abs() */ 

#include /* exit() */ 

/* 函数结果状态代码*/ 

#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 的内容*/

}

回答2:

一楼真猛,就为5分给楼主写这么长的程序!!顶了