新手怎样做网站,wordpress 搜索文章,wordpress 使用浏览器缓存,自己做盈利视频网站线性表的定义和基本操作
学习目标
线性表定义#xff1a;具有相同数据类型的n个数据元素的有序序列。 顺序表定义#xff1a; 特点 基本操作
定义 静态#xff1a;
#includestdio.h
#includestdlib.h#define MaxSize 10//静态
typedef struct{int …线性表的定义和基本操作
学习目标
线性表定义具有相同数据类型的n个数据元素的有序序列。 顺序表定义 特点 基本操作
定义 静态
#includestdio.h
#includestdlib.h#define MaxSize 10//静态
typedef struct{int data[MaxSize];int length;
}SqList;void InitList(SqList L)//初始化
{for(int i0;iMaxSize;i){L.data[i]0;}L.length0;
}int main(void)
{SqList L;InitList(L);for(int i0;iL.length;i){printf(the data %d is %d,i,L.data[i]);}return 0;
}动态
#includestdio.h
#includestdlib.h#define InitSize 10typedef struct{int *data;int MaxSize;//最大容量 int length;//当前长度
}SeqList;void Init(SeqList L)
{L.data(int *)malloc(InitSize*sizeof(int));L.length0;L.MaxSizeInitSize;
}int main(void){return 0;
}插入 静态
//插入操作,bool用于判断操作是否成功 (处理异常情况)
bool ListInsert(SqList L,int i,int e){if(i1 || iL.length1) return false;//条件判断 if(L.length MaxSize) return false;for(int jL.length;ji;i--){L.data[j]L.data[j-1];}L.data[i-1]e;L.length;
}动态 删除 静态
bool ListDelete(SqList L,int i,int e){if(i1||iL.length) return false;eL.data[i-1];for(int ji;jL.length;j){L.data[j-1]L.data[j];}L.length--;return true;
}动态顺序表以及各个操作
#includestdio.h
#includestdlib.h
#define InitSize 10typedef struct{int *data;int MaxSize;int length;
}SqList;void debug(SqList L){printf(当前顺序表的数据为length%d maxsize%d\n,L.length,L.MaxSize);
}
//初始化
void InitList(SqList L){L.data(int *)malloc(InitSize*sizeof(int));L.length0;L.MaxSizeInitSize;
}//增加动态数组的长度
void IncreaseSize(SqList L,int len){int *pL.data;L.data(int *)malloc((L.MaxSizelen)*sizeof(int));for(int i0;iL.length;i){L.data[i]p[i];//将数据复制到新区域 }L.MaxSizeL.MaxSizelen;//顺序表最大长度增加len free(p);//释放空间
} //插入操作
bool ListInsert(SqList L,int i,int e){//范围判断 if(i1 || iL.length1)return false;if(L.lengthL.MaxSize)return false;for(int jL.length;ji;j--){L.data[j]L.data[j-1];}L.data[i-1]e;L.length;return true;
} 删除操作,删除第i个数据并且返回被删除的数据
bool ListDelete(SqList L,int i,int e)
{//范围判断if(i1 || iL.length1) return false;else{//保存删除元素eL.data[i]; for(int ji;jL.length;j){L.data[j]L.data[j1];}L.length--;} return true;} //按位查找
int getElemBybit(SqList L,int i){//Check if the line has been crossedif(i1 || iL.length){printf(Cross the border!);return 0;}return L.data[i-1];
} //按值查找
int getElemByValue(SqList L,int value){for(int i0;iL.length;i){if(L.data[i] value){return i-1;}}printf(Cant find the elem!);return 0;
} //打印操作
void print(SqList L){for(int i0;iL.length;i){printf(%d ,L.data[i]);}printf(\n);
} //测试函数
int main(void){SqList L;debug(L);InitList(L);debug(L);for(int i0;iL.MaxSize;i){L.data[i]i;L.length;}IncreaseSize(L,5);debug(L);print(L);if(ListInsert(L,2,5)){printf(插入成功,插入后数值);print(L);}else printf(插入失败);int e0;if(ListDelete(L,3,e)){print(L);printf(被删除元素为%d,e);}int value,position;printf(\nPlease input the value and the position:); scanf(%d %d, value, position); printf(\nget the emlem by value :the elem position is%d\n,getElemByValue(L,value));printf(\nget the emlem by positon:the value is%d\n,getElemBybit(L,position));return 0;
}