刚上了一节课老师就让我们写这个,好家伙直接给孩子搞蒙了,开搞了!
#include <stdio.h>
#include <stdlib.h>
/********************************/
/*顺序表的头文件,文件名sequlist.h*/
/********************************/
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
/**************************************************/
/* 函数功能:顺序表的初始化-置空表 */
/* 函数参数:指向sequence_list型变量的指针变量slt */
/* 函数返回值:空 */
/* 文件名:sequlist.c, 函数名:init() */
/***************************************************/
void init(sequence_list *slt)
{
slt->size=0;
}
/***************************************************/
/* 函数功能:在顺序表后部进行插入操作 */
/* 函数参数:指向sequence_list型变量的指针变量slt */
/* datatype类型的变量x */
/* 函数返回值:空 */
/* 文件名:seqlappe.c, 函数名:append() */
/***************************************************/
void append(sequence_list *slt,datatype x)
{
if(slt->size==MAXSIZE)
{printf("顺序表是满的!");exit(1);}
slt->a[slt->size]=x;
slt->size=slt->size+1;
}
/***************************************************/
/* 函数功能:打印顺序表的各结点值 */
/* 函数参数:sequence_list型变量slt */
/* 函数返回值:空 */
/* 文件名:sequlist.c, 函数名:display() */
/***************************************************/
void display(sequence_list slt)
{
int i;
if(!slt.size) printf("\n顺序表是空的!");
else
for(i=0;i<slt.size;i++) printf("%5d",slt.a[i]);
}
int find(sequence_list slt,datatype x)
{
int i;
for (i = 0; i<slt.size; i++)
{
if( x < slt.a[i])
return i;
}
return i;
}
int orderinsert(sequence_list *slt,datatype x) /*也可以不用我给的函数原型,自己写一个函数*/
{
int i,j;
datatype t;
if(slt->size==MAXSIZE)
{
printf("顺序表是满的,无法插入");exit(1);
}
slt->a[slt->size]=x;
slt->size++;
for (i=0;i<slt->size-1;i++)
{
for(j=i+1;j<=slt->size-1;j++)
if(slt->a[i]>slt->a[j])
{t=slt->a[i];slt->a[i]=slt->a[j];
slt->a[j]= t;//插入和交换顺序
}
}
for(i=0;i<slt->size;i++)//依次输出
printf("%5d",slt->a[i]);
}
int main()
{sequence_list L;
datatype y;
int j,n;
/*建表*/
printf("请输入顺序表的结点个数:"); scanf("%d",&n);
printf("请输入顺序表的结点值:\n");
for(j=1;j<=n;j++)
{scanf("%d",&y);append(&L,y);
}
display(L);
/*在此处完成对orderinsert函数的调用,并进行测试。如果是自己写的函数,同样完成函数的调用和测试*/
printf("请输入要插入的值:");scanf("%d",&y) ;
printf("插入数值后的顺序表为:");
orderinsert(&L,y);
}