数据结构(顺序表的实现)

版权声明:欢迎读者转载,如果有问题请给与评论。 https://blog.csdn.net/qq_41848006/article/details/82020750
#include<iostream>
#define Max_len 100  //容器的最大存量
using namespace std;
  //各种数据结构,无非
     //构造函数
     //初始化:什么数据类型
     //插入:插入的位置和插入的元素
     //删除:删除那个元素
     //查找:按值查找还是按址查找以及查找的方向 
     //遍历:下标遍历和迭代器遍历


	//cout << "*********顺序表********" << endl;
	//顺序表的结构体定义
	
struct Data {
	char key[10];
	char name[20];
	int age;
};

typedef struct SList {
		Data  ListData[Max_len+1];
		int  len;
	}Sqlist,*Pqlist;    //Sqlist是结构体变量,用.引用结构体的成员变量过成员函数
                        //*Pqlist是结构体指针,指向结构体对象,用->引用结构体的成员变量或者成员函数

void Sqinit(Pqlist L)  //初始化为空
   {
	L->len = 0;
   }

int Sqlen(Pqlist L)  //计算顺序表的长度
{
	return(L->len);
}

int SqInsert(Sqlist &L,int a,Data test)   //顺序表的插入操作
   {
		if (a<1 || a>L.len)  
			return 0;
		if (L.len >= Max_len)
			return 0;
		for (int i = L.len; i >= a; --i)
		{
			L.ListData[i+1] = L.ListData[i];
		}
		L.ListData[a] = test;
		L.len++;
		return 1;
   }

int SqAdd(Pqlist L, Data key)   //追加结点
{
	if (L->len >= Max_len)
		cout << "顺序表已满,不能再添加结点了!" << endl;
	else
		L->ListData[++L->len] = key;
	return 1;
}

int SqDelete(Pqlist L, int n)   //删除结点
{
	if (n<1 || n>L->len)
	{
		cout << "删除序号错误!" << endl;
		return 0;
	}
	for (int i = n; i < L->len; ++i)
	{
		L->ListData[i] = L->ListData[i + 1];
	}
	L->len--;
	return 1;
}

Data *SqFind(Pqlist L,int key)  //按下标查找
{
	if (key<1 || key>L->len)
	{
		cout << "查询号错误!" << endl;
		return 0;
	}
	return &(L->ListData[key]);
}

int  SqFind2(Pqlist L, char *key)
{
	for (int i = 1; i <= L->len; ++i)
	{
		if (strcmp(L->ListData[i].key, key) == 0)
			return i;
	}
	return 0;
}

void SqDisplay(Pqlist L)
{
	for (int i = 1; i < L->len; ++i)
	{
		cout << "key:" << L->ListData[i].key << endl;
		cout << "name:" << L->ListData[i].name << endl;
		cout << "age:" << L->ListData[i].age << endl;
	}
}

int main()
{
	Sqlist L;
	Data data;
	string name;
	Sqinit(&L);
	do
	{
		//循环添加结点数据 
		cout << "请输入要添加的结点(学号 姓名 年龄):";
		cin >> data.name >> data.name >> data.age;
		if (data.age)
		{
			if (!SqAdd(&L, data))
				break;
		}
		else
			break;
	} while (1);

	system("pause");
	return 0;

}

猜你喜欢

转载自blog.csdn.net/qq_41848006/article/details/82020750