#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;
}