2.2.2顺序表上基本操作的实现
插入:
#include <stdio.h>
#define MaxSize 10 //定义最大长度
typedef struct{
int data[MaxSize]; //用静态的"数组"存放数据结构
int length; //定义顺序表的当前长度
}SqList; //定义顺序表的类型
//基本操作--初始化顺序表
void InitList(SqList &L){
for(int i=0;i<MaxSize;i++){
L.data[i]=0;
}
L.length=0;
}
void ListInsert(SqList &L,int i,int e){
for(int j=L.length;j>=i;j--){//将最后一位赋值给他的下一位
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
}
int main(){
SqList L;
InitList(L);
//添加元素
ListInsert(L,3,3);
return 0;
}
可对插入数据是否合法进行判断。
删除操作:
#include<stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}SqList;
bool ListDelete(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[j-1]=L.data[j];
}
L.length--;
return true;
}
void InitList(SqList &L){
for(int i=0;i<MaxSize;i++){
L.data[i]=0;
}
L.length=0;
}
int main(){
SqList L;
InitList(L);
//插入数据
int e=-1;
if(ListDelete(L,3,e)){
printf("删除第三个元素,删除元素的值为=%d\n",e);
}else{
printf("所要删除的索引不合法");
}
return 0;
}
按位查找
注:
用指针访问数据时每次取几个 字节,根据指针的类型所决定
这就能解释为什么用malloc要强转指针的原因。
判断两个结果类型是否相等必须分开判断不能直接判断()
按值查找: