#include<iostream>
#include<string>
using namespace std;
#include<bits/stdc++.h>
#define maxlen 100 //表的最大长度
typedef struct{
char key[10];
char name[20];
int age;
} Data;//节点的结构
typedef struct{
Data listdata[maxlen+1];//用于保存结点的结构体数组
int listlen;//节点数量/表的长度
}SLType;//顺序表的结构
int SLInit(SLType* SL,int i)
{
SL->listlen=i;
}//初始一个空表。
int SLLength(SLType*SL){
return SL->listlen;
}//输出表的长度。
int SLInsert(SLType *SL,int n,Data data)
{
int i;
if(SL->listlen>=maxlen)
{
printf("顺序表已满,无法插入\n");
return 0;
}
if(n>SL->listlen||n<1)
{
printf("插入元素序号有误,无法插入\n");
return 0;
}
for(i=SL->listlen;i>n;i--)
{
SL->listdata[i+1]=SL->listdata[i];
}
SL->listdata[n]=data;
SL->listlen+=1;
return 1;
}//插入一个数据
int SLAdd(SLType*SL,Data data)
{
if(SL->listlen>=maxlen)
{
printf("顺序表已满,无法添加");
return 0;
}
else{
SL->listdata[SL->listlen]=data;
return 1;
}
} //判断顺序表是否已满,在表的末尾添加一个数据。
int SLDelete(SLType *SL,int n,Data data)
{
if(n<1||n>SL->listlen)
{
printf("输入节点序号有误,无法删除\n");
return 0;
}
int i=n-1;
for(i;i<SL->listlen;i++)
{
SL->listdata[i]=SL->listdata[i+1];
}
SL->listlen-=1;
return 1;
}//删除指定数据;
int SLFindByCont(SLType*SL,char *key){
int i=1;
for(i;i<=SL->listlen;i++)
{
if(SL->listdata[i].key==key)
return i;
}
return 0;
} //查找指定数据的序号;
int Printf(SLType *SL)
{
int i;
for(i=1;i<=SL->listlen;i++)
{
cout<<"第"<<i<<"个学生的学号、姓名、年龄"<<SL->listdata[i-1].key<<" "<<SL->listdata[i-1].name<<" "<<SL->listdata[i-1].age<<endl;
}
return 0;
}
int main()
{
int i;
SLType SL;//定义顺序表
Data data;//定义节点
char key[10];
SLInit(&SL,6);
cout<<"初始化顺序表完成"<<endl;
while(1){
cout<<"请输入节点(学号 姓名 年龄)"<<endl;
cin>>data.key>>data.name>>data.age;
fflush(stdin);
if(data.age)
{
if(!SLAdd(&SL,data))
{
break;
}
}
else{
break;
}
}
cout<<endl<<"顺序表的节点顺序:";
Printf(&SL);
return 0;
}