#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <stdbool.h>//gcc不支持bool类型,故引入包
/*顺序结构的实现*/
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct Arr{
int* pBase; //首地址
int maxSize; //最大长度
int valSize; //有效元素的个数
};
// 判断是否为空
bool is_empty(struct Arr * pArr){
if(pArr->valSize==0)
return true;
else
return false;
}
//判断是否满
bool is_full(struct Arr * pArr){
if(pArr->valSize==pArr->maxSize)
return true;
else
return false;
}
//初始化
void init(struct Arr * pArr,int max){
pArr->pBase = (int *)malloc(sizeof(struct Arr)*max); //分配存储空间
if(pArr->pBase==NULL){
printf("分配存储空间失败\n");
exit(-1);
}
pArr->maxSize = max;//最大长度
pArr->valSize = 0;
printf("初始化成功\n");
}
//追加元素
void append(struct Arr * pArr,int ele){
if(is_full(pArr))
printf("空间已满\n");
else{
pArr->pBase[pArr->valSize] = ele;
++pArr->valSize; //有效表长+1
}
}
//打印所有的元素
void show(struct Arr * pArr){
int i ;
for(i=0;i<pArr->valSize;i++){
printf("%d ",pArr->pBase[i]);
}
}
//删除第i个元素
void delete_arr(struct Arr * pArr,int i){
if(i<1||i>pArr->valSize){
printf("i不合法");
}
else{
int j;
for(j=i;j<=pArr->valSize-1;j++){
pArr->pBase[j-1] = pArr->pBase[j];
}
--pArr->valSize;
}
}
//指定位置添加元素
void insert(struct Arr * pArr,int i ,int ele){
if(pArr->valSize==pArr->maxSize){
printf("存储空间已满");
}
else if(i<1||i>pArr->valSize){
printf("i不合法");
}
else{
int j ;
for(j=pArr->valSize-1;j>=i-1;j--){
pArr->pBase[j+1] = pArr->pBase[j];
}
pArr->pBase[i-1] = ele;
++pArr->valSize;
}
}
//取值
void getEle(struct Arr * pArr,int i){
if(i<1||i>pArr->valSize){
printf("i不合法");
}
else{
int ele = pArr->pBase[i-1];
printf("第%d个元素是%d\n",i,pArr->pBase[i-1]);
}
}
//查找
bool locateEle(struct Arr * pArr,int ele){
int i;
for(i=0;i<pArr->valSize;i++){
if(ele == pArr->pBase[i]){
printf("%d是第%d号\n",ele,i+1);
return true;
}
else{
printf("%d不存在\n",ele);
return false;
}
}
}
//倒置
void inversion(struct Arr * pArr){
int i = 0; //向后移动
int j = pArr->valSize-1;
int t;
while(i<j){
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
i++;
j--;
}
}
int main(int argc, char *argv[]) {
struct Arr arr; //声明arr
init(&arr,100);
append(&arr,1);
append(&arr,2);
append(&arr,3);
append(&arr,4);
append(&arr,5);
//delete_arr(&arr,1);
//insert(&arr,1,100);
//getEle(&arr,2);
//locateEle(&arr,5);
inversion(&arr);
show(&arr);
}
#include <stdlib.h>
#include <malloc.h>
#include <stdbool.h>//gcc不支持bool类型,故引入包
/*顺序结构的实现*/
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct Arr{
int* pBase; //首地址
int maxSize; //最大长度
int valSize; //有效元素的个数
};
// 判断是否为空
bool is_empty(struct Arr * pArr){
if(pArr->valSize==0)
return true;
else
return false;
}
//判断是否满
bool is_full(struct Arr * pArr){
if(pArr->valSize==pArr->maxSize)
return true;
else
return false;
}
//初始化
void init(struct Arr * pArr,int max){
pArr->pBase = (int *)malloc(sizeof(struct Arr)*max); //分配存储空间
if(pArr->pBase==NULL){
printf("分配存储空间失败\n");
exit(-1);
}
pArr->maxSize = max;//最大长度
pArr->valSize = 0;
printf("初始化成功\n");
}
//追加元素
void append(struct Arr * pArr,int ele){
if(is_full(pArr))
printf("空间已满\n");
else{
pArr->pBase[pArr->valSize] = ele;
++pArr->valSize; //有效表长+1
}
}
//打印所有的元素
void show(struct Arr * pArr){
int i ;
for(i=0;i<pArr->valSize;i++){
printf("%d ",pArr->pBase[i]);
}
}
//删除第i个元素
void delete_arr(struct Arr * pArr,int i){
if(i<1||i>pArr->valSize){
printf("i不合法");
}
else{
int j;
for(j=i;j<=pArr->valSize-1;j++){
pArr->pBase[j-1] = pArr->pBase[j];
}
--pArr->valSize;
}
}
//指定位置添加元素
void insert(struct Arr * pArr,int i ,int ele){
if(pArr->valSize==pArr->maxSize){
printf("存储空间已满");
}
else if(i<1||i>pArr->valSize){
printf("i不合法");
}
else{
int j ;
for(j=pArr->valSize-1;j>=i-1;j--){
pArr->pBase[j+1] = pArr->pBase[j];
}
pArr->pBase[i-1] = ele;
++pArr->valSize;
}
}
//取值
void getEle(struct Arr * pArr,int i){
if(i<1||i>pArr->valSize){
printf("i不合法");
}
else{
int ele = pArr->pBase[i-1];
printf("第%d个元素是%d\n",i,pArr->pBase[i-1]);
}
}
//查找
bool locateEle(struct Arr * pArr,int ele){
int i;
for(i=0;i<pArr->valSize;i++){
if(ele == pArr->pBase[i]){
printf("%d是第%d号\n",ele,i+1);
return true;
}
else{
printf("%d不存在\n",ele);
return false;
}
}
}
//倒置
void inversion(struct Arr * pArr){
int i = 0; //向后移动
int j = pArr->valSize-1;
int t;
while(i<j){
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
i++;
j--;
}
}
int main(int argc, char *argv[]) {
struct Arr arr; //声明arr
init(&arr,100);
append(&arr,1);
append(&arr,2);
append(&arr,3);
append(&arr,4);
append(&arr,5);
//delete_arr(&arr,1);
//insert(&arr,1,100);
//getEle(&arr,2);
//locateEle(&arr,5);
inversion(&arr);
show(&arr);
}