顺序表学习
数据结构
顺序表学习
1、初始化顺序表
#include <stdio.h>
#include <stdlib.h>
#define InitSize 10
typedef struct{
int *data;
int MaxSzie;
int len;
}sqlList;
void InitList(sqlList &list){
list.data = (int*)malloc(InitSize*sizeof(int));
list.len = 0;
list.MaxSzie =InitSize;
}
void IncreaseSzie(sqlList &list,int len){
int *p = list.data;
list.data = (int*)malloc((list.MaxSzie+len)*sizeof(int));
for(int i = 0;i<list.len;i++){
list.data[i] = p[i];
}
list.MaxSzie = list.MaxSzie+len;
free(p);
}
bool sqlListInsert(sqlList &list,int i, int e){
if(i<1 || i>InitSize){
return false;
}
if(list.len > InitSize){
return false;
}
for(int j = list.len ; j>=i;j--){
list.data[j] = list.data[j-1];
}
list.data[i-1] = e;
list.len++;
return true;
}
bool deletesqllist(sqlList &list,int i,int &e){
if(i<1 || i>InitSize){
return false;
}
for(int j = i;j<list.len;j++){
list.data[j-1] = list.data[j];
}
e = list.data[i-1];
list.len--;
}
int main(void) {
sqlList list;
InitList(list);
int e =-1;
if(deletesqllist(list,3,e)){
printf("删除成功%d\n",e);
}else{
printf("删除失败");
}
return 0;
}顺序表的查找操作:
1按位查找
return list.data[i-1];
时间复杂度为O(n);
2按元素查找
for(int i = 0;i<list.len;i++){
if(list.data[i] == e){
return i+1;
}
}
查看4道真题和解析