• 欢迎光临~

数据结构代码实操04——————顺序表的总结(就是顺序表的基本操作一起用)

开发技术 开发技术 2022-07-25 次浏览

通过这几天的代码实操,总算是把顺序表的建立、顺序表的插入与删除以及顺序表的按位查找和按值查找搞明白了!

这次的代码有点长,其实也就是把之前的顺序表的代码积攒在一起了,部分都搞明白了,只需要把每个部分都组装起来就行了。

学习任何东西都是一样,当你把一个章节的每个知识点都搞懂之后,不妨去将这些组合成一个整体,说不定会有奇效哦!

#include<stdio.h>
#include<stdlib.h>
//顺序表:顺序表的建立、顺序表的插入与删除、顺序表的基本操作(按位查找、按值查找)
//顺序表的定义
#define InitSize 10
typedef struct{
int *data;
int length;
int MaxSize;
}SeqList;

//顺序表的初始化
void InitList(SeqList &L){
L.data=(int *)malloc(InitSize*sizeof(int));
L.length=10;
L.MaxSize=InitSize;
}

//顺序表的增加
void IncreaseList(SeqList &L,int len){
int *p=L.data;
L.data=(int *)malloc((L.MaxSize+len)*sizeof(int));
L.MaxSize=L.MaxSize+len;
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
}
printf("增加后的顺序表的空间为:%dn",L.MaxSize);
free(p);
}

//顺序表的插入
bool InsertList(SeqList &L,int i,int e){
if(i<1||i>L.length+1){
return false;
}
if(L.length==L.MaxSize){
return false;
}
//一切判断无误后
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];//第i个位置后的数据往后移,从最后的数据开始
}
L.length++;
L.data[i-1]=e;
return true;
}

//顺序表的删除
bool DeleteList(SeqList &L,int i,int &n){
if(i<1||i>L.length){
return false;
}
//一切判断无误后,开始删除
n=L.data[i-1];
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];//第i个位置后的数据,从第i个位置的后一位开始
}
L.length--;
return true;
}



//顺序表的按位查找
void LocateList(SeqList &L,int i){
if(i<1||i>L.length){
printf("输入位置%d不合法n",i);
}
else{
printf("位置%d的值为:%dn",i,L.data[i-1]);
}

}




//顺序表的按值查找
int DataList(SeqList &L,int n){
for(int i=0;i<L.length;i++){
if(L.data[i]==n){
printf("查询成功!顺序表的%d值的位置为:%dn",n,i+1);
return 0;
}
}
printf("查询失败!顺序表中没有该值n");
return 0;
}




//顺序表的调用
int main(){
SeqList L;
InitList(L);
printf("给顺序表中的%d个空间赋值:n",L.length);
for(int i=0;i<L.length;i++){
scanf("%d",&L.data[i]);
}

IncreaseList(L,5);//顺序表的空间增加





if(InsertList(L,2,5)){//顺序表的调用
printf("插入成功!插入后的顺序表为:n");
for(int i=0;i<L.length;i++){
printf("%d ",L.data[i]);
}
}
else
printf("插入失败!n");



int a=5;
if(DeleteList(L,2,a)) {//顺序表的删除
printf("删除成功!删除后的顺序表为:n");
for(int i=0;i<L.length;i++){
printf("%d ",L.data[i]);
}
}
else
{
printf("删除失败!n");
}

LocateList(L,5);//按位查找


DataList(L,4);//按值查找

}

希望以上代码能给大家带来帮助,多多批评指正吧!!!

喜欢 (0)