顺序表的基本操作:
1.顺序表-初始化
2.顺序表-获得元素
3.顺序表-查找元素
4.顺序表-插入元素
5.顺序表-删除元素
1.顺序表-初始化
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
//顺序表的结构体定义
typedef struct
{
int *data; //存放顺序表元素的数组
int length; //存放顺序表的长度
}Sqlist; //顺序表类型的定义
//初始化顺序表
Sqlist initList()
{
Sqlist L;
L.data = (int*)malloc(maxSize*sizeof(int));
L.length = 0;
return L;
}
//展示表中数据
void display(Sqlist L)
{
printf("表中的数据元素为:\n");
for(int i=0;i<L.length;i++)
{
printf("%d\t",L.data[i]);
}
printf("\n");
}
int main()
{
//用户自定义输入表中元素
Sqlist L = initList();
int n;
printf("请输入表的个数并且输入元素(用空格分开):");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&L.data[i]);
L.length++;
}
//测试展示表中元素
display(L);
}
2.顺序表-获得元素
用 e 返回 L 中 p 位置上的元素,代码如下:
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
//顺序表的结构体定义
typedef struct
{
int *data; //存放顺序表元素的数组
int length; //存放顺序表的长度
}Sqlist; //顺序表类型的定义
//初始化顺序表
Sqlist initList()
{
Sqlist L;
L.data = (int*)malloc(maxSize*sizeof(int));
L.length = 0;
return L;
}
//展示表中数据
void display(Sqlist L)
{
printf("表中的数据元素为:\n");
for(int i=0;i<L.length;i++){
printf("%d\t",L.data[i]);
}
printf("\n");
}
//获得指定位置的元素,即用e返回L中p位置上的元素,获得成功则返回1,否则返回0.
int getElem(Sqlist L, int p, int &e)
{
if (p<0||p>L.length-1)
return 0;
e = L.data[p];
return 1;
}
int main()
{
//用户自定义输入表中元素
Sqlist L = initList();
int n;
printf("请输入表的个数并且输入元素(用空格分开):");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&L.data[i]);
L.length++;
}
//测试展示表中元素
display(L);
//测试获得指定位置元素
int p,e;
printf("请输入要获得元素的下标:");
scanf("%d",&p);
int result = getElem(L,p,e);
printf("%d\n",result);
printf("这个位置的元素为:%d\n",e);
}
3.顺序表-查找元素
在顺序表中查找第一个值等于 e 的元素,并返回其下标,代码如下:
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
//顺序表的结构体定义
typedef struct
{
int *data; //存放顺序表元素的数组
int length; //存放顺序表的长度
}Sqlist; //顺序表类型的定义
//初始化顺序表
Sqlist initList()
{
Sqlist L;
L.data = (int*)malloc(maxSize*sizeof(int));
L.length = 0;
return L;
}
//展示表中数据
void display(Sqlist L)
{
printf("表中的数据元素为:\n");
for(int i=0;i<L.length;i++){
printf("%d\t",L.data[i]);
}
printf("\n");
}
//查找第一个值等于e的元素
int findElem(Sqlist L, int e )
{
int i;
for(i=0;i<L.length;i++)
{
if (e==L.data[i])
return i; //若找到,则返回下标
}
return -1; //没有找到,返回-1
}
int main()
{
//用户自定义输入表中元素
Sqlist L = initList();
int n;
printf("请输入表的个数并且输入元素(用空格分开):");
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&L.data[i]);
L.length++;
}
//测试展示表中元素
display(L);
//测试查找元素
int e;
printf("请输入要查找的元素");
scanf("%d",&e);
int result = findElem(L,e);
printf("找到了与e相等的第一个元素的位置为%d\n",result);
}
4.顺序表-插入元素
在顺序表 L 的第 p 个位置上插入新的元素 e ,如果 p 的输入不正确,则返回0,代表插入失败,如果 p 的输入正确,则将顺序表第 p 个元素及以后元素右移一个位置,腾出一个空位置插入新元素,顺序表长度增加1,插入操作成功,返回1。代码如下:
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
//顺序表的结构体定义
typedef struct
{
int *data; //存放顺序表元素的数组
int length; //存放顺序表的长度
}Sqlist; //顺序表类型的定义
//初始化顺序表
Sqlist initList()
{
Sqlist L;
L.data = (int*)malloc(maxSize*sizeof(int));
L.length = 0;
return L;
}
//展示表中数据
void display(Sqlist L)
{
printf("表中的数据元素为:\n");
for(int i=0;i<L.length;i++){
printf("%d\t",L.data[i]);
}
printf("\n");
}
//在顺序表的第p个位置上插入新的元素e。如果p输入不正确,返回0,p输入正确,插入成功,返回1。
int insertElem(Sqlist &L, int p, int e)
{
int i;
if(p<0||p>L.length||L.length==maxSize)
return 0;
for(i=L.length-1;i>=p;--i)
{
L.data[i+1] = L.data[i];
}
L.data[p] = e;
++L.length;
return 1;
}
int main()
{
//用户自定义输入表中元素
Sqlist L = initList();
int n;
printf("请输入表的个数并且输入元素(用空格分开):");
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&L.data[i]);
L.length++;
}
//测试展示表中元素
display(L);
//测试插入元素
int p,e;
printf("请输入要插入的位置:");
scanf("%d",&p);
printf("请输入要插入的元素:");
scanf("%d",&e);
int result = insertElem(L,p,e);
printf("%d\n",result);
//插入后展示表中元素
display(L);
}
5.顺序表-删除元素
删除顺序表 L 中下标为 p 的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
//顺序表的结构体定义
typedef struct
{
int *data; //存放顺序表元素的数组
int length; //存放顺序表的长度
}Sqlist; //顺序表类型的定义
//初始化顺序表
Sqlist initList()
{
Sqlist L;
L.data = (int*)malloc(maxSize*sizeof(int));
L.length = 0;
return L;
}
//展示表中数据
void display(Sqlist L)
{
printf("表中的数据元素为:\n");
for(int i=0;i<L.length;i++){
printf("%d\t",L.data[i]);
}
printf("\n");
}
//删除表L中下标为p的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。
int deleteElem(Sqlist &L, int p, int &e)
{
int i;
if (p<0||p>L.length-1)
return 0;
e = L.data[p];
for(i=p;i<L.length-1;++i)
{
L.data[i] = L.data[i+1];
}
--L.length;
return 1;
}
int main()
{
//用户自定义输入表中元素
Sqlist L = initList();
int n;
printf("请输入表的个数并且输入元素(用空格分开):");
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&L.data[i]);
L.length++;
}
//测试展示表中元素
display(L);
//测试删除表中元素
int p,e;
printf("请输入要删除元素的下标:");
scanf("%d",&p);
int result = deleteElem(L,p,e);
printf("%d\n",result);
printf("删除的元素为:%d\n",e);
//删除后展示表中元素
display(L);
}