线性表的顺序存储结构

本代码实现了线性表顺序存储
完成了下列算法

  1. 建立空表
  2. 寻找
  3. 插入
  4. 删除
#include<iostream>
#define maxsize 10
using namespace std;
typedef int ElementType;
typedef struct Lnode* List;


/*注意:last是数组中最后一个元素的位置,由于数组是从0开始计数,
所以最后一个元素为i时,last等于i-1。*/
/*由于maxsize太大(顺序存储不可避免造成空间浪费)
,后面的数据为垃圾数据。*/ 


struct Lnode {
	ElementType data[maxsize];
	int last;
	
};	
	
List MakeEmpty()//构造空链表 
{
	List ptrl;
	ptrl=(List)malloc( sizeof( struct Lnode ) );
	ptrl->last=-1;
	return ptrl;
}

int Find ( List ptrl ,ElementType x )
{
	int i=0;
	while( i<=ptrl->last && ptrl->data[i]!=x ){
		i++;
	}
	if( i<=ptrl->last )
		return i+1;
	else
		return -1;
}
/*注意:last是数组中最后一个元素的位置,由于数组是从0开始计数,
所以最后一个元素为i时,last等于i-1。*/ 
void Insert (List ptrl, int i, ElementType x)//在第i个元素处插入x元素 
{
	if(ptrl->last == maxsize-1){            //先判断位置i是否合法 
		cout<<"链表满"<<endl;
		return;                             
	}
	if(i<1 || i>ptrl->last+2){
		cout<<"位置越界"<<endl;
		return; 
	}
	for(int j=ptrl->last; j>=i-1; --j){
		ptrl->data[j+1] = ptrl->data[j];
	}
	ptrl->data[i-1] = x;
	ptrl->last ++;
}

void Delete (List ptrl, int i )//删除第i个元素 
{
	
	if(i<1 || i>ptrl->last+2){       //先判断位置i是否合法
		cout<<"位置越界"<<endl;
		return; 
	}
	for(int j=i-1; j<=ptrl->last; ++j){
		ptrl->data[j] = ptrl->data[j+1];
	}
	ptrl->last --;
}

int main()
{
	List list1;
	list1=MakeEmpty();
	Insert(list1 ,1 ,111 );
	Insert(list1 ,2 ,222 );
	Insert(list1 ,3 ,333 );
	Insert(list1 ,5 ,444 );
	
	int x=222;
	cout<<"元素"<<x<<"在第"<<Find( list1, x)<<"处"<<endl;
	
	for( int i : list1->data )
		cout<<i<<endl;
	cout<<"list->last = "<<list1->last<<endl;
	cout<<endl;	
	Delete( list1, 2);
	for( int i : list1->data )
		cout<<i<<endl;
	cout<<"list->last = "<<list1->last<<endl;
	
	return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值