当前位置: 代码迷 >> 综合 >> 王道数据结构:顺序表上基本操作的实现
  详细解决方案

王道数据结构:顺序表上基本操作的实现

热度:34   发布时间:2024-01-25 08:01:33.0

顺序表的定义:

线性表的顺序存储又称顺序表,顺序表有随机存储的优点,但对于插入删除操作需要移动大量的元素。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>#define MaxSize 10//顺序表定义
typedef struct {int data[MaxSize];//存放顺序表元素的数组int length;//顺序表的长度 
//	int size;//顺序表的大小,感觉没必要	
}Sqlist; //初始化顺序表 
void initSqlist(Sqlist &sqlist){sqlist.length=0;printf("初始化完成,初始单链表长度为%d\n",sqlist.length);} 
//求表长
void Length(Sqlist l){printf("表长为%d\n",l.length);}
//按值查找 
void LocateElem(Sqlist sq,int e){int flag=-1;for(int j=0;j<sq.length;j++){if(sq.data[j]==e){flag=j;break; }}if(flag!=-1){printf("查找成功,在data[%d]上\n",flag);}else{printf("查找失败"); }}
//按位操作 
void GetElem(Sqlist sq,int i){if(i<1||i>sq.length+1){printf("查找位置不合法");}else{printf("data[%d]上的数值为%d",i,sq.data[i-1]);}} 
//插入操作 
//实现将元素e插入到顺序表L的第i个位置 
bool ListInsert(Sqlist &sq,int l,int e){if(l<1||l>sq.length+1){printf("插入位置不合法");return false;}if(sq.length>=MaxSize){printf("存储空间不足");return false;}for (int i=sq.length;i>=l;i--){	sq.data[i]=sq.data[i-1];}sq.data[l-1]=e;sq.length++;printf("插入成功,插入数据为%d\n",e); return true;
}
//删除操作 
bool ListDelete(Sqlist &sq,int i,int &e){//先判断删除是否合法if(i<1||i>sq.length+1){printf("删除位置不合法");return false; } e=sq.data[i-1];for(int j=i-1;j<=sq.length;j++){sq.data[j-1]=sq.data[j];}sq.length--;printf("删除成功,删除元素为%d\n",e);return true; 
}
//输出操作 
void PrintList(Sqlist sq){for(int i=0;i<sq.length;i++){printf("data[%d]=%d  ",i,sq.data[i]);}
}
//判空操作 
bool Empty(Sqlist sq){if(sq.length==0){printf("链表为空"); }else{printf("链表不空"); }
}
//销毁操作 
void DestoryList(Sqlist &sq){}int main(){Sqlist list1;initSqlist(list1);//初始化 Empty(list1); ListInsert(list1,1,1);	//插入操作    ListInsert(list1,2,2);	//插入操作  ListInsert(list1,3,3);	//插入操作  ListInsert(list1,4,4);	//插入操作  ListInsert(list1,5,5);	//插入操作  PrintList(list1); //输出表 Length(list1);//求表长int e=0;ListDelete(list1,2,e); PrintList(list1); //输出表 Length(list1);//求表长LocateElem(list1,2);//按值查找 GetElem(list1,3);//按位置查找 
}