#include <iostream.h>
#include <stdlib.h>
#define M 20
typedef struct STUDENT
{
int num[M];
struct STUDENT *next;
}STU;
void initlist(STU *&sq) //初始化
{
sq=(STU *)malloc(sizeof(STU));
sq->next=NULL;
}
int getlength(STU *sq) //求长度
{
int i=0;
STU *p=sq->next;
while(p!=NULL)
{
i++;
p=p->next;
}
return i;
}
STU *getelem(STU *sq,int i) //求线性表中第i个元素
{
int j=1;
STU *p=sq->next;
if(i<1||i>getlength(sq))
return NULL;
while(j<i)
{
p=p->next;
j++;
}
return p;
}
STU *locate(STU *sq,int x) //按值查找
{
STU *p=sq->next;
int k=0;
while(p!=NULL)
{
for(int j=0;j<M;j++)
if(sq->num[j]=x)
{
k=2;
break;
}
else
k=1;
if(k=2)
{
cout<<"链表中存在此元素!\n";
return p;
}
}
cout<<"链表中不存在此元素!\n";
return p;
}
void init(STU A);
int InsElem(STU *sq,STU s,int x,int i) //插入结点
{
int j=1;
STU *p=sq;
if (i<1||i>getlength(sq)+1)
return 0;
while (j<i)
{
p=p->next;
j++;
}
s.next=p->next;
p->next=&s;
return 1;
}
int DelElem(STU *sq,int i) //删除
{
int j=1;
STU *p=sq,*q;
if (i<1||i>getlength(sq))
return 0;
while (j<i)
{
p=p->next;
j++;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
void DispList(STU *sq) //输出
{
STU *p=sq->next;
while (p!=NULL)
{
for(int k=0;k<M;k++)
cout<<p->num[k]<<" ";
p=p->next;
}
cout<<endl;
}

void shuru(STU &B,int i)
{
int *b=(int *)malloc(sizeof (int)*i);
for(int j=0;j<i;j++)
{
cin>>b[j];
B.num[j]=b[j];
}
}
void init(STU A)
{
int i;
cout<<"数组的大小:\t";
cin>>i;
if(i<0||i>M)
{
cout<<"错误!过大!";
init(A);
}
else
shuru(A,i);
}
void main()
{
STU stu;
init(stu);
DispList(&stu);
}