typedefint Position;typedefstruct LNode *List;struct LNode {//存储内容
ElementType Data[MAXSIZE];//存储下标位置
Position Last;};
方法
初始化:初始化一个线性表
插入数据:在第i个位置插入数据
删除数据:删除第i个位置的数据
查找数据:查找线性表中的位置
代码实现
#include<iostream>#include<stdio.h>#define MAXSIZE 100typedefint Position;typedefstruct LNode *List;struct LNode {int data[MAXSIZE];// 线性表中最后的下表,不是线性表的长度
Position last;};
List Init();
bool Insert(List list,int value, Position index);
bool Delete(List list, Position index);
Position Find(List list,int value);voidprint(List list);intmain(){
List list =Init();for(int i =0; i <10; i++){//插入Insert(list, i +1, i+1);}//查找
Position x =Find(list,3);printf("位置为 %d\n", x);print(list);//删除第3个元素Delete(list,3);print(list);
x =Find(list,3);printf("结果为: %d\n", x);Insert(list,3,3);print(list);return0;}/**
* 初始化
* @return
*/
List Init(){
List list;// 动态分配空间
list =(List)malloc(sizeof(struct LNode));
list->last =-1;return list;}/**
* 插入数据
* @param list 插入的链表
* @param value 插入的值
* @param index 插入的位置
* @return true:插入成功 false:删除失败
*/
bool Insert(List list,int value, Position index){//下标比位置少1
index = index -1;//判断是否能够插入if(list->last == MAXSIZE){printf("线性表满了");return false;}//判断插入的信息是否合法if(index <0|| index > list->last +1){printf("插入的位置不合法");return false;}//把index-1和index-1和面的数组往后移动一位for(int i = list->last; i >= index; i--){
list->data[i +1]= list->data[i];}//赋值
list->data[index]= value;//线性表的末尾位置加1
list->last++;return true;}/**
* 删除第index个元素
* @param list 删除的线性表
* @param index 删除的位置
* @return true:删除成功 false:删除失败
*/
bool Delete(List list, Position index){//判断删除位置的合法性if(index <0|| index > list->last){printf("删除的位置不合法");return false;}//将index+1和index+1之后的往前移动一位for(int i = index; i <= list->last; i++){
list->data[i-1]= list->data[i];}//线性表的末尾位置减1
list->last--;return true;}/**
* 查找value在线性表中第一次出现的位置
* @param list 查找的对象
* @param value 查找的值
* @return 返回值在对象中的位置, -1表示没有找到
*/
Position Find(List list,int value){
Position index =-1;for(int i =0; i <= list->last; i++){if(list->data[i]== value){
index = i;break;}}if(index ==-1){printf("没有找到");}return index;}voidprint(List list){printf("[");for(int i =0; i < list->last; i++){printf("%d ,", list->data[i]);}printf("]\n");}