0
点赞
收藏
分享

微信扫一扫

线性表基本操作代码片段(C和C++)

木樨点点 2022-03-13 阅读 64

用C实现的基本操作

所需头文件及预定义

#include<stdlib.h>
#include<stdio.h>
#define MaxSize 100  
#define ok 1
#define error 0
#define overflow -2 
#define int Status    
typedef struct{
    int data[MaxSize];  
    int length;              
}SqList;  

初始化

//初始化操作,建立一个空的线性表L 
Status InitList_Sq(SqList &L){	
	if(!L.data)
		exit(overflow);
	L.length = 0;
    return ok;
}

 建表

//建表
void CreastList(SqList &L,int n) {
	printf("输入你想插入的数据:\n");
	int x;
	for(int i = 0;i < n;i++){
		scanf("%d",&x);
		L.data[i] = x;
		L.length++;
	}
}

销毁线性表

//销毁线性表 
void DestoryList(SqList &L) {	
	if(L.data)
		free(L.data);			//释放存储空间 
}

线性表清空 

//线性表清空 
void ClearList(SqList &L){			
	L.length = 0;
} 

表长 

//返回线性表的长度 
Status ListLength(SqList L){			
	return L.length;
}

判断表是否为空

//判断线性表是否为空
Status ListEmpty(SqList L){			
	if(L.length==0)
		return 1;
	else
		return 0;
}

 查找指定位置的值

//线性表第i个元素返回给e
Status GetElem(SqList L,int i,int &e){				 
	if(i < 1 || i > L.length)				//判断i值是否合理,若不合理,返回error 
		return error;
	e = L.data[i-1];
	return ok;
}

 查找给定值的位置

//线性表L中查找与给定e元素相等的元素
Status LocateElem(SqList L,int e){    //如果查找成功,返回该元素在表中的序号,否则返回0表示失败 
	for(int i = 0;i < L.length;i++)
		if(L.data[i] == e)
			return i+1;
	return 0;
}

顺序表中指定位置插入 

//顺序表的指定位置插入
Status ListInsert_Sq(SqList &L,int i,int e){
     if(i < 1 || i> L.length+1)          //判断i的范围是否有效
        return error;
     if(L.length >= MaxSize)          //判断存储空间已满,不能插入
        return error;
     for(int j = L.length;j >= i;j--)   //将要插入位置的元素及其后面的元素往后移
         L.data[j] = L.data[j-1];
     L.data[i-1] = e;                 //在指定位置放入插入的元素
     L.length++;                    //顺序表现有数据长度加一
     return ok;
}

 删除表中指定位置的值

//删除指定位置的值并返回e
Status ListDelete_Sq(SqList &L,int i,int &e){
	if(i < 1 || i > L.length+1)				//判断i值是否合理,若不合理,返回error 
		return error;
	e = L.data[i-1];
	for(int j = i;j <= L.length-1;j++)
		L.data[j-1] = L.data[j];			//被删除元素之后的元素前移 
	L.length--;			                //表长减1 
	return ok;
}

打印输出

//打印表
void print(SqList L){
	int i;
	for(i = 0;i < L.length;i++)
		printf("%d",L.data[i]);
	printf("\n");
} 

(C++的正在写)

若以上代码有任何错误或可以改进的地方欢迎在评论区指出并讨论。
感谢你的阅读与支持!

举报

相关推荐

0 条评论