数据结构—顺序表的基本操作--C语⾔代码(可运⾏)1、顺序表的基本操作
使⽤软件:vs code
基本操作:
1. InitList(SqList *L);//初始化
2. Length(SqList &L);//求表长
3. ListInsert(SqList &L,int i,Elemtype e);//插⼊操作
4. ListDelete(SqList &L,int i,Elemtype e);//删除操作
5. LocateElem(SqList &L,Elemtype e);//按值查
6. GetElem(SqList &L,int i);//按位查
7. PrintfList(SqList L);//输出操作
1.1定义顺序表
#define Maxsize 50        //定义线性表的最⼤长度
typedef struct SqList
{
Elemtype data[Maxsize];//顺序表的元素
int length;            //顺序表的长度
}SqList;                  //顺表表的类型定义
1.2初始化顺序表
Status InitList(SqList *L)
{
printf("初始化:************************************\n");
L->length=0;
printf("初始化完成\n");
return 1;
}
1.3插⼊操作
printf("插⼊操作:************************************\n");
printf("在第%d位,插⼊%d\n",i,e);
if (i<1||i>L.length+1)
{
printf("插⼊失败\n");
return false;      //判断输⼊i的范围是否有效
}
if (L.length>=Maxsize)
{
printf("插⼊失败\n");
return false;        //判断表是否满
}
for (int j=L.length;j>=i;j--)
{
L.data[j]==L.data[j-1];    //将第i个元素及之后的元素后移
}
L.data[i-1]=e;        //在位置i上加⼊e值
L.length++;            //线性表长度加1
printf("插⼊成功\n");
return true;
}
1.4删除操作
Status ListDelete(SqList &L,int i,Elemtype e)
{
printf("删除操作:************************************\n");
if (i<1||i>L.length)        //判断i的范围是否有效
{
return false;
}
if (L.length>=Maxsize)
{
return false;
}
for (int j = i; j < L.length; j++)
{
L.data[j-1]=L.data[j];    //将第i个位置后元素前移
}
L.length--;                  //线性表长度减1
return true;
}
1.5按值查
printf("按值查操作:************************************\n");
printf("和%d相同的值的位置为:\n",e);
for (int i = 0; i < L.length; i++)
{
if (L.data[i]==e)
{
printf("data[%d]\n",i+1);
}基础c语言代码
}
return 1;
}
1.6按位查
Status GetElem(SqList &L,int i)
{
printf("按位查:************************************\n");
printf("第%d位的值是%d:\n",i,L.data[i-1]);
return 1;
}
1.7输出操作
void PrintfList(SqList L)
{
printf("输出操作:************************************\n");
printf("data中\n");
for (int i = 0; i < L.length; i++)
printf("data[%d] = %d ", i, L.data[i]);
printf("\n线性表的长度为 %d \n", L.length);
return;
}
2、代码
(要是在⾃⼰的电脑上运⾏请先创建⼀个以(.cpp)为后缀的⽂件然后再复制下⾯代码)
#include<stdio.h>
#include <cstring>
#include <iostream>
#include <iomanip>
#define Maxsize 50
#define Status int
#define Elemtype int
typedef struct SqList
{
Elemtype data[Maxsize];
int length;
/* data */
}SqList;
Status InitList(SqList *L);//初始化
Status Length(SqList &L);//求表长
Status ListInsert(SqList &L,int i,Elemtype e);//插⼊操作
Status ListDelete(SqList &L,int i,Elemtype e);//删除操作
Status LocateElem(SqList &L,Elemtype e);//按值查
Status GetElem(SqList &L,int i);//按位查
void PrintfList(SqList L);
int main()
{
SqList L;
InitList(&L);
Length(L);
ListInsert(L, 1, 0);
ListInsert(L, 2, 1);
ListInsert(L, 3, 2);
ListInsert(L, 4, 1);
ListDelete(L, 2, 1);
LocateElem(L,1);
GetElem(L, 1);
PrintfList(L);
system("pause");
}
/
/初始化
Status InitList(SqList *L)
{
printf("初始化:************************************\n");    L->length=0;
printf("初始化完成\n");
return 1;
}
//求表长
Status Length(SqList &L)
{
printf("求表长:************************************\n");    printf("%d\n",L.length);
return 1;
}
//插⼊操作
Status ListInsert(SqList &L,int i,Elemtype e)
{
printf("插⼊操作:************************************\n");    printf("在第%d位,插⼊%d\n",i,e);
if (i<1||i>L.length+1)
{
printf("插⼊失败\n");
return false;      //判断输⼊i的范围是否有效
/* code */
}
if (L.length>=Maxsize)
{
printf("插⼊失败\n");
return false;        //判断表是否满
/* code */
}
for (int j=L.length;j>=i;j--)
{
L.data[j]==L.data[j-1];
/* code */
}
L.data[i-1]=e;
L.length++;
printf("插⼊成功\n");
return true;
}
}
//输出操作
void PrintfList(SqList L)
{
printf("输出操作:************************************\n");
printf("data中\n");
for (int i = 0; i < L.length; i++)
printf("data[%d] = %d ", i, L.data[i]);
printf("\n线性表的长度为 %d \n", L.length);
return;
}
//删除操作
Status ListDelete(SqList &L,int i,Elemtype e)
{
printf("删除操作:************************************\n");
if (i<1||i>L.length)
{
return false;
/* code */
}
if (L.length>=Maxsize)
{
return false;
/* code */
}
for (int j = i; j < L.length; j++)
{
L.data[j-1]=L.data[j];
/* code */
}
L.length--;
return true;
}
//按值查
Status LocateElem(SqList &L,Elemtype e)
{
printf("按值查操作:************************************\n");    printf("和%d相同的值的位置为:\n",e);
for (int i = 0; i < L.length; i++)
{
if (L.data[i]==e)
{
printf("data[%d]\n",i+1);
/* code */
}
}
return 1;
}
//按位查
Status GetElem(SqList &L,int i)
{
printf("按位查:************************************\n");
printf("第%d位的值是%d:\n",i,L.data[i-1]);
return 1;
}
3、运⾏结果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。