线性表的输入输出插入删除查找(顺序表示)

#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ok 1
#define error -1
#define overflow -2 
#define ElemType int
typedef struct 
{
    ElemType *elem;
	int length;
	int listsize;
    int Status;
}SqList;
int InitList_Sq(SqList &L)
{
	
	L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
	if(!L.elem)
		exit(overflow);
	L.length=0;
	L.listsize=LIST_INIT_SIZE;
	return ok;
}
int CreateList_Sq(SqList &L)
{
	int i,e;
	
	scanf("%d",&e);
	for (i=0;i<e;i++) {    
		scanf ("%d",&L.elem[i]);         
		L.length=L.length+1;
	}
	return 1;
}

int PrintList_Sq(SqList &L){
	int i;
	for (i=0; i < L.length ; i++)
	{
		printf ("%d\n",L.elem[i]); 
	}
	return 1;
}

int ListInsert_Sq(SqList &L,int i,ElemType e)
{
	int *q,*p,*newbase;
	if(i<1||i>L.length+1)
		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]);
		for(p=&(L.elem[L.length-1]);p>=q;--p)
			*(p+1)=*p;
		*q=e;
		++L.length;
		return ok;
}
int ListDelete_Sq(SqList &L,int i)
{
	int *p,*q;
	if((i<1)||(i>L.length))
		return error;
	p=&(L.elem[i-1]);
	
	q=L.elem+L.length-1;
	for(++p;p<=q;++p)
		*(p-1)=*p;
	--L.length;
	return ok;
}
int LocateElem_Sq(SqList &L,ElemType e){  
    
         printf("%d",L.elem[e-1]);
			 
 
 return 0;  
}  
void main()
{
	SqList pt;
	int a,b,c;
	InitList_Sq(pt);
	CreateList_Sq(pt);
    PrintList_Sq(pt);
	printf("\n");
	scanf("%d,%d",&a,&b);
	ListInsert_Sq(pt,a,b);
	PrintList_Sq(pt);
	printf("\n");
	scanf("%d",&a);
	ListDelete_Sq(pt,a);
	PrintList_Sq(pt);
	scanf("%d",&c);
	LocateElem_Sq(pt,c);
	printf("\n");
}


  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值