顺序表的创建

        顺序表其实跟数组没啥区别,只是有的时候人们会单独定义一个结构体,结构里面创建一个数组,然后创建一个变量储存结构体的长度。

下面是以结构体类型的顺序表,表中包含了一个结构体类型的数组和数组长度,同时给变量赋值和显示指定数组的功能。

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#define sum 100

//建立元素类型结构体
typedef struct worker
{
	string name;
	int salary;
};

//建立顺序表
typedef struct
{
	worker w[sum];
	int num;
}Sqlist;

//创建表中元素
void creatWorker(Sqlist &s)
{
	string name;
	cin >> name;
	s.w[s.num].name = name;
	s.w[s.num].salary = rand() % 9999 + 10000;
	s.num++;
}

//显示指定元素
void showWorker(Sqlist& s)
{
	int a = 0;
	while (true)
	{
		cin >> a;
		if (a >0 && a <= s.num)
		{
			cout << s.w[a-1].name << " " << s.w[a-1].salary << endl;
			break;
		}
		else
		{
			cout << "请重新输入" << endl;
		}
	}

}
int main()
{
	srand((unsigned)time(NULL));
	Sqlist s;
	s.num = 0;
	creatWorker(s);
	showWorker(s);
	return 0;
}

下面指针形式创建的顺序表,表中存有一个指针,指向数组首地址,和一个整数,储存数组长度,在给表 赋值时,开辟了指定数量的数组的内存,指针不变,通过加减元素的个数来找到指定元素。

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#define sum 100

//建立元素类型结构体
typedef struct worker
{
	string name;
	int salary;
};

//建立顺序表
typedef struct
{
	worker* w;
	int num;
}Sqlist;

//创建表中元素
void creatWorker(Sqlist &s,int num)
{
	s.w = new worker[sum];
	string name;
	cin >> name;
	(s.w+num)->name = name;
	(s.w+num)->salary = rand() % 9999 + 10000;
	s.num++;

}

//显示指定元素
void showWorker(Sqlist& s)
{
	int a = 0;
	worker* p;
	p = s.w;
	while (true)
	{
		cin >> a;
		if (a > 0 && a <= s.num)
		{
			p += (a-1);
			cout << p->name << " " << p->salary<< endl;
			break;
		}
		else
		{
			cout << "请重新输入" << endl;
		}
	}

}
int main()
{
	srand((unsigned)time(NULL));
	Sqlist s;
	s.num = 0;
	creatWorker(s,s.num);
	showWorker(s);
	return 0;
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值