#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 50
//静态分配顺序表
typedef struct
{
int sq[MAXSIZE];
int length;
}SQList;
void init(SQList *L)//初始化
{
L->length=0;
int i = 0;
for(i;i<L->length;i++){
L->sq[i]=0;
}
}
void Insert(SQList *L,int index,int val){//插入 添加元素
int i;
if(index<=L->length){
if(index<L->length){
L->length++;
for(i=L->length;i>=index;i--){
L->sq[i]=L->sq[i-1];
}
}else{
L->length++;
}
L->sq[index]=val;
}else{
printf("插入位置不合适!\n");
}
}
void traversal(SQList *L){//遍历元素
int i= 0;
for(i;i<L->length;i++){
printf("%d\n",L->sq[i]);
}
}
int length(SQList *L){
return L->length;
}
void Delete(SQList *L,int index){//删除指定位置的元素
int a=index;
if(index<L->length){
for(a;a<L->length-1;a++)
{
L->sq[a]=L->sq[a++];
}
L->length--;
} else{
printf("索引值输入错误!\n");
}
}
int main(int argc, char *argv[]) {
SQList L;
init(&L);
int a;
while(1){
printf("请输入要进行的操作!\n");
scanf("%d",&a);
switch(a){
case 1:
init(&L);
printf("初始化成功!\n");
break;
case 2:
printf("顺序表中的元素有:\n");
traversal(&L);
break;
case 3:
printf("请输入插入元素的位置索引和元素的数值!\n");
int val;
int index;
scanf("%d %d",&index,&val);
Insert(&L,index,val);
break;
case 4:
printf("请输入删除元素位置的索引!\n");
int indexa;
scanf("%d",&indexa);
Delete(&L,indexa);
break;
case 5:
printf("当前顺序表有%d个有效元素!\n",length(&L));
break;
}
}
traversal(&L);
return 0;
}
顺序表——静态分配
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一、静态树表的查找对有序表的查找,如使用折半查找方法,是在“等概率”的前提下进行的,如果查找概率不一样,折半查找就...
- 顺序查找 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最...
- 前言 今天在看Android ContentProvider实现的时候,突然想到了Java类在new的过程中,静态...