顺序表的基本功能(C语言实现)

该博客展示了如何使用C语言实现顺序表的基本功能,包括初始化、销毁、清空、获取长度、判断是否为空、取值、查找、插入、删除、显示和获取指定位置元素。通过示例代码详细解释了每个操作的实现过程,并提供了主函数进行测试。
摘要由CSDN通过智能技术生成

顺序表的基本功能(C语言实现)

**

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define TRUE 1
#define OK 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -1

typedef int Elemtype;
typedef int Status;

typedef struct{
	Elemtype *elem;
	int length;
}sqlist; 

Status Ininlist_sq(sqlist &L){      //初始化 
	L.elem =(Elemtype *)malloc(sizeof(Elemtype)*(MAXSIZE));
	if(!L.elem )
	{exit(OVERFLOW);
	 printf("初始化失败");
	}
	else
	printf("初始化成功\n"); 
	L.length =0;
}

Status Destorylist_sq(sqlist &L){   //销毁 
	if(L.elem )
	free(L.elem ); 
	printf("销毁成功\n"); 
}

Status Clearlist_sq(sqlist &L){     //清空 
    if(L.elem )
	L.length =0;
	printf("清空成功\n");	
} 

Status GetElem_sq(sqlist L){           //求线性表长度
    return L.length; 
}

Status Emptylist_sq(sqlist L){         //判断是否为空
    if(L.length ==0)
 {  printf("线性表为空\n");	
    return 1;
}	
    else
	{
	printf("线性表不为空");
	return 0;
}}

Status Getlist_sq(sqlist L,int i,Elemtype &e){    //顺序表取值 
    if(i<1||i>L.length )
    return ERROR;
    e=L.elem[i-1];
    return e;
}

Status LocateElem_sq(sqlist L,Elemtype e){        //线性表查找
    int i;
	for(i=0;i<L.length;i++)
	if(L.elem[i]==e )
	return i+1;
	printf("查找成功\n");
	return 0; 
} 

Status Insertlist_sq(sqlist &L,int i,Elemtype e){    //插入 线性表
    if(i<1||i>L.length+1)
	  return ERROR;
	if(L.length==MAXSIZE)
	  return ERROR;
	int j;
	for(j=L.length-1;j>=i-1;j--) 
	  L.elem[j+1]=L.elem[j];
	  L.elem[i-1]=e;
	  L.length++;
	  return OK;
} 

Status Displaylist_sq(sqlist L){      //显示 线性表 
	int i;
	for(i=0;i<=L.length-1;i++)
	printf("%d\n",L.elem[i]); 
	printf("显示成功\n"); 
}

Status Deletelist_sq(sqlist &L,int i){   //删除 线性表
   if(i<1||i>L.length )  return ERROR;
   for(int j=i;j<=L.length-1;j++)
     L.elem[i-1]=L.elem[i];
	 L.length --;
	 return OK; 
	 printf("删除数据成功\n");
	
} 
 
int main()
{
	Status i,e,n,m,j,x;
	sqlist L;
	Ininlist_sq(L);                     //初始化 
	printf("***********************\n");
	printf("请问,您要输入几条数据?\n");
	scanf("%d",&n);
	printf("***********************\n");
	printf("请一条一条的输入数据!\n");
	for(i=1;i<=n;i++)                  
	{scanf("%d",&e);
	Insertlist_sq(L,i,e);}              //插入 
	printf("***********************\n");
		Displaylist_sq(L);                  //显示  
	printf("***********************\n");
	printf("请输入您要删除第几条数据\n");
	scanf("%d",&x); 
	Deletelist_sq(L,x);                 //删除 
	Displaylist_sq(L);                  //显示  
	printf("***********************\n");
    e=GetElem_sq(L);	                //求线性表长度
    printf("线性表长度为:%d\n",e);
	printf("***********************\n");
	printf("请输入您要查找第i个数据\n");
	scanf("%d",&i);	
    m=Getlist_sq(L,i,e);                //顺序表取值 
    printf("第%d个数据为:%d\n",i,m);
    printf("***********************\n");
    printf("请输入您要查找的数据\n");
	scanf("%d",&e); 
	j=LocateElem_sq(L,e);                 //线性表查找 
	printf("%d数据是第%d条数据\n",e,j);
	printf("***********************\n");
	Clearlist_sq(L);                    //清空 
	printf("***********************\n");
    Emptylist_sq(L);                    //判断是否为空
	printf("***********************\n");
	Destorylist_sq(L);      //销毁 
	printf("***********************\n");

}

运行程序结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值