1.创建:实质是对data与length的修改
//定义一个线性表
typedef struct
{int data[MaxSize];//存储线性表的元素 int length;//线性表的长度
}SqList;
//新建一个表
void create(SqList &l){//传入地址才可以对其值进行改变 printf("请输入线性表的长度:\n");scanf("%d",&l.length);printf("请输入线性表的元素:\n");for(int count=0;count<l.length;count++)scanf("%d",&l.data[count]);printf("\n线性表创建成功!\n");
}
2.添加:数组元素的后移
printf("\n线性表元素为:");for(i=0;i<l.length;i++)printf("%d\t",l.data[i]);}
//插入元素方法
void insert(SqList &l,int i,int x)//要改变某个值,请传入它的地址才能实现对其值的操作
{int j; //非法判断:插入位置与表的容量if(l.length>MaxSize)printf("该表已满,无法插入!");if(i<1||i>l.length+1)printf("插入序号不合法!");if(i<=l.length)//插入位置不在元素末时,其后元素后移for(j=l.length-1;j>=i-1;j--) l.data[j+1]=l.data[j];l.data[i-1]=x;//插入位置在元素末时,直接插入 l.length++;printf("\nlength:%d",l.length);printf("\nx:%d",x);printf("\n插入成功!");}
3.删除:数组元素的前移
void dele(SqList &l,int i)
{int j,e; //非法判断if(l.length==0)printf("该表为空!");if(i<1||i>l.length)printf("删除序号不合法!");e=l.data[i-1];if(i<l.length)//元素前移{for(j=i-1;j<l.length;j++)l.data[j]=l.data[j+1];}l.length--;printf("\n删除成功!");printf("\n删除元素值为:%d",e);
}
3.打印:实质是遍历输出
//输出线性表
static void print(SqList l)
{int i;printf("\n线性表元素为:");for(i=0;i<l.length;i++)printf("%d\t",l.data[i]);}
4.主函数
#define MaxSize 20//数组的大小
#include<stdio.h>
int main()
{SqList l;int a,b,c;create(l);print(l);
printf("\n请输入要插入位置:");scanf("%d",&a);
printf("\n请输入要插入元素:");scanf("%d",&b);insert(l,a,b);print(l);
printf("\n请输入要删除的元素序号:");scanf("%d",&b);dele(l,b);print(l);
}```