数据结构顺序表的一系列功能(超多注释版),小编自己当笔记用发表一下 。

# include <stdlib.h>                     //1.必要的库语句
# include <stdio.h> 
#define OK 1                             //2.必要的库常亮定义	
#define ERROR 0
#define	OVERFLOW -1
#define	List_Size 100//线性表存贮空间的初始化大小配置
#define ListIncrement 10//线性表储存空间的分配增量
typedef int ElemType;//考虑好取值范围定义不用的类型
typedef struct{                             //3.必要的数据类型定义
 ElemType*elem;//存放线性表数组地址
 int length;//线性表当前长度
 int listsize;//线性表当前分配储存容量
}SqList;
int InitSqList(SqList &L){// 构造一个容量为 List_Size的顺序表   4.函数
	L.elem=new ElemType[List_Size];  // 为顺序表分配大小为 List_Size的数组空间
    if(!L.elem)exit(OVERFLOW);
	L.length=0;
	L.listsize=List_Size;
	return OK;
}
void CreatSqList(SqList&L,int n){// 构造n元素的顺序表 
    int i;
	for(i=0;i<n;i=i++){      
	scanf("%d",&L.elem[i]);
	L.length++;
	}
}
void Deatroy(SqList &L){//销毁数据表
    delete L.elem; 
}

int ListInsert (SqList &L, int i, ElemType x) {// 在顺序表L的第 i 个元素之前插入新的元素x,
	int j;
    ElemType *p;
	if (i < 1 || i > L.length+1){ 
	    return ERROR; 
		}            // 插入位置不合法
    if (L.length >= L.listsize) { 
          p=(ElemType*)realloc(L.elem, (L.listsize+ListIncrement)*sizeof(ElemType));   
          if(!p)exit(OVERFLOW);
             L.elem=p;
             L.listsize=L.listsize+ListIncrement;  // 当前存储空间已满,增加空间  	
		} 
	for(j=L.length-1;j>=i;j--)L.elem[j+1]=L.elem[j];{//插入位置之后元素全部后移
	L.elem[i]=x;//插入元素
	++L.length;
	return OK;
	}

}

int ListDelete(SqList &L,int i){
   int j;
   if(i<1||i>L.length)//删除位置不合法
	   return	ERROR;
   for(j=i-1;j<L.length-1;j++)
	   L.elem[j]= L.elem[j+1];//元素位置依次前移动
       --L.length;//表递减1
       return OK;
}
int LocatElem(SqList L,ElemType x){//给位置
	int i=1;
	while(i<=L.length&&L.elem[i-1]!=x)i++;
	if(i<=L.length)
	   return i; 
	   else return ERROR;
}

  
void DispList(SqList L) {    // 输出顺序表
	int i;
	for (i=0;i<L.length;i++)
		printf("%d",L.elem[i]);
	    printf("\n");
}
void Contrary_Sq(SqList &La){//将顺序表逆置放
   int i=0,temp;
   for(i=0;i<La.length/2;i++){
   temp=La.elem[i];
   La.elem[i]= La.elem[La.length-1-i];
   La.elem[La.length-1-i]=temp;

   
   }      
}
int main(){
    SqList L;
	int i,f;
	i=3;
    f=2020;
	ElemType x=f;
	/*scanf("%d%d",&x,&i);*/
    InitSqList(L);
	CreatSqList(L,5);
	DispList(L);
	printf("%d\n",L.length);
	if(ListInsert(L,i,x))DispList(L);
	if(ListDelete(L,i))DispList(L);
    Contrary_Sq(L);
	DispList(L);

	return 0;



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值