//没啥说的 挺简单
//2.2.1
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define maxsize 100
typedef struct
{ int list[maxsize];
int last; int len;
}seqlist;
void init(seqlist *l)
{ //l=(seqlist *)malloc(sizeif(seqlist) 动态内存分配 写了这句后 last ,len自动加一
l->len=0; l->last=-1; }
void creat(seqlist *l,int n) /*创建顺序表 */
{
int i;
int a[100];
for(i=0;i<n;i++)
{ l->list[i]=i;
l->len++;
}
}
void empty(seqlist *l)
{ if(l->len==0)
printf("表非空 ");
else
printf("表为空 "); }
int length(seqlist *l)
{ printf("length:%d",l->len);
return l->len;; }
int getelem(seqlist *l,int i,int data)
{ if(l->len<i||i<1)
{ printf("位置不合法");
return -1;
}
else
{ data=l->list[i-1];
printf("第i位序号上的数字是%d",data);
return 1;}
}
int locate(seqlist *l,int data)
{ int i=0;
for(i=0;i<l->len;i++)
if(data==l->list[i])
printf("已找到data对应的序号%d",i);
return 1;
printf("未找到序号");
return 0; }
int insert(seqlist *l,int x,int i)
{ int j;
if(l->len==maxsize)
{ printf("表已满");
return -1;
}
if(i>l->len||i<1)//
{ printf("位置不合法");
return -1;
}
for(j=l->len-1;j>=i-1;j--)
{
l->list[j+1]=l->list[j];
}
l->list[i-1]=x;
l->last++;
l->len++; return 1;
}
int delet(seqlist *l,int i)
{ int j;
if(l->len==0)
{ printf("表已空");
return 0;
}
else if(i<1||i>l->len)
{ printf("序号位置不对");
return -1;
}
else
{ for(j=i;j<l->len+1;j++)
{ l->list[j-1]=l->list[j];/////////
} l->len--;
return 1; } }
int main()/*[Error] expected initializer before 'seqlist' 错误类型是指seqlist前面有错误*/
{ int i,x;
int a[100];
seqlist *l;
init(l);
creat(l,5);
printf(" ");
empty(l);
printf("依次输出表的值:");
printf(" ");
for(i=0;i<l->len;i++)
{ printf("%d ",l->list[i]);
}
printf(" ");
locate(l,3);
printf(" ");
getelem(l,3,x);
printf(" ");
length(l);
printf(" ");
delet(l,2);
for(i=0;i<l->len;i++)
{ printf("%d ",l->list[i]);
}
return 0;
}