实验1 顺序表的建立和运算

顺序表的建立与运算
包括最大值,删除,插入,排序。


#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR -1
#define LIST_INIT_SIZE    100
#define LISTINCREMENT     10
typedef int Status;
typedef int ElemType;

//创建一个空的顺序表
typedef struct {
ElemType *elem;
int length;
int listsize;
}Sqlist;

//初始化顺序表
Status InitList(Sqlist&L)
{
 L.elem=((ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)));
 if(!L.elem)
  return ERROR;
 L.length=0;
 L.listsize= LIST_INIT_SIZE;
 return OK;
}


//取顺序表中的值
Status GetList(Sqlist&L)
{
    int i;
    printf("\n请输入线性表元素:");
    for (i = 0; i <L.length; i++)
    scanf("%d",&L.elem[i]);
    printf("\n您输入的元素为:");
    for(i=0;i<L.length;i++)
    {
        printf("%d ",L.elem[i]);
    }
    printf("\n");
    return OK;
}


//查找最大元素
Status GetMax(Sqlist&L)
{
    int i;
    int max=L.elem[0];
    printf("\n元素的最大值为:");
    for(i=1;i<L.length;i++)
	{
        if(max<L.elem[i])
		{
            max=L.elem[i];
        }
    }
    printf("%d\n",max);
    return OK;
}


//在线性表的第m个元素前插入一个正整数x
Status Insert(Sqlist&L,int m,int x)
{

   int n;

   for(n=L.length-1;n>=m-1;n--)
   {
    L.elem[n+1]=L.elem[n];
   }
   L.elem[m-1]=x;
   L.length++;
   return OK;
}

//删除线性表中的第j个元素
Status DeleteElem(Sqlist&L,int j)
{
   int n;
   for(n=j-1;n<L.length;n++)
   {
    L.elem[n]=L.elem[n+1];
   }
   L.length--;
   return OK;
}

//排序
Status Sort(Sqlist&L)
{
    int i;
    int j;
    for(i=0;i<L.length-1;i++)
	{
        for(j=i+1;j<L.length;j++)
		{
            if(L.elem[i]<L.elem[j])
			{
                int t;
                t=L.elem[i];
                L.elem[i]=L.elem[j];
                L.elem[j]=t;
            }
        }
    }
    return OK;
}


//主函数
int main()
{
    int i,n,x,m,a;
    Sqlist L;
    
	//创建一个线性表
    InitList(L);
    printf("请输入要添加的元素个数:");
    scanf("%d",&L.length);
    GetList(L);



	//得出最大值
    GetMax(L);



    //插入元素
    printf("\n在第m个前面插入元素:");
    scanf("%d",&m);
    printf("\n插入的元素x为:");
    scanf("%d",&x);
	Insert(L,m,x);
    printf("\n插入后的元素为:");
    for(i=0;i<L.length;i++)
    {
        printf("%d ",L.elem[i]);
    }
    printf("\n");
 


	//删除元素
    printf("\n删除的元素是第n个:");
    scanf("%d",&n);
	DeleteElem(L,n);
    printf("\n删除后的元素是:");
    for(i=0;i<L.length;i++)
    {
        printf("%d ",L.elem[i]);
    }
    printf("\n");
	



	//元素排序
	Sort(L);
      printf("\n排序后的元素为:");
    for(i=0;i<L.length;i++)
    {
        printf("%d ",L.elem[i]);
	}
	system("pause");
}







  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值