线性表(1)— “顺序表”

顺序表(1)——静态分配(数组)

相关操作(创销,增删查):

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10

//顺序表定义类型(静态分配—数组) 
typedef struct {
    
    
	int data[MaxSize];
	int length;
}SqList;

//初始化一个顺序表
 void InitList(SqList &L){
    
    
 	L.length=0;
 } 
 
//顺序表插入元素
 bool InsertList(SqList &L,int i,int e){
    
    
 	if(i<1||i>L.length+1){
    
    
 		return false;
	 }//判断输入是否合法 
	 if(L.length>MaxSize){
    
    
	 	return false;
	 }//是否超出数组最大长度
	 for(int j=L.length;j>=i;j--){
    
    
	 	L.data[j]=L.data[j-1];
	 	L.data[j-1]=e;
	 	L.length++;
	 }
	 return true;
 }
 
//顺序表删除元素
 bool DeleteList(SqList &L,int i,int &e){
    
    
 	if(i<1||i>L.length){
    
    
 		return false;
	 }
	 e=L.data[i-1];
	 for(int j=i;j<L.length;j++){
    
    
	 	L.data[i-1]=L.data[i];
	 	L.length--;
	 }
	 return true;
 }
 
//顺序表(按值)查找元素
  int LocateList(SqList L,int e){
    
    
  	//for循环扫描全表寻找e 
  	for(int i=0;i<L.length;i++){
    
    
  		if(L.data[i]==e){
    
    
  			return i;
		  }else{
    
    
		  	return 0;
		  }
	  }
  } 
 
//遍历当前顺序表
 void printList(SqList L){
    
    
 	for(int i=0;i<L.length;i++){
    
    
 		printf("%d",L.data[i]);
	 }
	 printf("\n");
 } 

int main(int argc, char *argv[]) {
    
    
	//声明一个顺序表
	SqList L;
	//初始化一个顺序表
	 InitList(L);
	 int i;
	 int a[5]={
    
    1,2,3,4,5};
	 for(i=1;i<5;i++)
	 InsertList(L,i,a[i-1]);
	 //打印当前顺序表
	 printList(L);
	 //在第二个元素后插入一个元素8
	 InsertList(L,2,8); 
	 //打印当前顺序表
	 printList(L);
	 //删除最后一个元素
	 int e=-1;
	 DeleteList(L,L.length,e);
	 //打印当前顺序表
	 printList(L);
	return 0;
}

暂未解决问题:编译无错误,但是无法运行

猜你喜欢

转载自blog.csdn.net/qq_47354826/article/details/120357500