3.4顺序存储结构(大话)c++实现

#include"iostream"
#define max 20
typedef int Type;
using namespace std;

typedef struct pNode {
	Type num[max];
	int lenth=0;
}Node;

/*查找需要输入结构体与序号*/
int search(Node *l,int index)
{
	/*如果长度非零*/
	if (l->lenth != 0 && l->lenth >= index && index > 0)
	{
		return l->num[index - 1];
	}
	else
		cout << "抱歉,可能是输入范围错误或者数组内无元素";
	return -1;
}

/*输入序号,在该序号之前插入元素*/
int insert(Node* l, int index,Type New)
{
	/*若长度为0,且序号不为1*/
	if (l->lenth == 0 && index != 1)
	{
		cout << "数组为空,所以无法在该序号前插入数据"<<endl;
		return -1;
	}
	/*若长度满了*/
	else if (l->lenth == max)
	{
		cout << "数组已经被填满了,无法插入新数据"<<endl;
		return -1;
	}
	/*若长度为0,且序号为1*/
	else if (l->lenth == 0 && index == 1)
	{
		l->num[index - 1] = New;
		l->lenth++;
		return 1;
	}
	else if (index>l->lenth+1)
	{
		cout << "序号错误,无法插入新数据" << endl;
		return -1;
	}
	/*正常情况*/
	else
	{
		for (int i = l->lenth-1; i >= index-1; i--)
		{
			l->num[i + 1] = l->num[i];
		}
		l->num[index - 1] = New;
		l->lenth++;
		cout << "添加成功" << endl;
		return 1;
	}

}

int del(Node* l, int index)
{
	if (l->lenth == 0)
	{
		cout << "数组长度为零,删除失败"<<endl;
		return -1;
	}
	else if(index>l->lenth||index<1)
	{
		cout << "序号大于/小于数组长度,删除失败"<<endl;
		return -1;
	}
	else 
	{
		for (int i = index - 1; i < l->lenth; i++)
		{
			l->num[i + 1] = l->num[i];
		}
		l->lenth--;
		cout << "删除成功" << endl;
		return 1;
	}
		
}
int clear(Node* l)
{
	l->lenth = 0;
	cout << "清空成功" << endl;
	return 1;
}
int masert(Node* l, Type New)
{
	if (l->lenth == 0)
	{
		l->num[0] = New;
		l->lenth++;
		return 1;
	}
	else if(l->lenth<max&& l->lenth>0){
		l->num[l->lenth] = New;
		l->lenth++;
		//cout << "添加成功" << endl;
		return 1;
	}
	else
		cout << "添加失败" << endl;
	return -1;
}

int main()
{
	Node l;
	for (int i = 1; i < 6; i++)
	{
		masert(&l, i);
		
	}
	/*insert(&l, 7, 0);*/
	/*del(&l, 0);*/
	/*clear(&l);*/
	int i=search(&l, 6);
	cout << "shjhdjas" << i<<endl;
	for (int i = 0; i < l.lenth; i++)
	{
		cout << l.num[i];

}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值