#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
//动态数组实现
#define InitSize 10//初始的长度
typedef struct{
int *data;//指向申请的那块内存的起始地址,所以下面要强制类型转换
int MaxSize;//顺序表的最大容量
int length;//顺序表的当前长度
}SeqList;
//增加动态数组的长度
void IncreaseSize(SeqList &L,int len){
int *p=L.data;
L.data=(int *)malloc((L.MaxSize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i] = p[i];//将数据赋值到新区域 ,,,But时间开销是很大的
}
L.MaxSize=L.MaxSize+len;
free(p);//释放原来的内存空间
}
//初始化
void InitList(SeqList &L){
L.data=(int *)malloc(InitSize*sizeof(int));
L.length=0;
L.MaxSize=InitSize;
}
//按位查找
int GetElem(SeqList L,int index){
return L.data[index-1];
//虽然data是一片连续的空间,但是仍然可以用data[i]的方式访问元素
}
//按值查找
int LocateElem(SeqList L,int e){
for(int i=0;i<L.length-1;i++){
if(L.data[i] == e){
return i+1;//如果能找到,就返回是第几个元素!!!!!
//break;
//不要有break,可能有多个数据符合呢,让他遍历完哦
}
}
return 0;
}
int main(){
SeqList L;
InitList(L);
IncreaseSize(L,5);
return 0;
}
2.数据结构_顺序表的基本操作(动态数组的实现)
最新推荐文章于 2023-12-06 22:46:18 发布