#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int Elemtype;
#define MAX 100
typedef struct list{
Elemtype data[MAX];
int length;
}SqList;
SqList *CreateSq()
{
srand((unsigned)time(NULL));
SqList *L=(SqList *)malloc(sizeof(SqList));
if(NULL==L)
printf("创建错误!\n");
printf("创建成功!\n");
L->length=0;
int n=0,x;
printf("输入元素个数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
x=rand()%10;
L->data[L->length]=x;
L->length++;
}
return L;
}
void logput(SqList *L)
{
printf("结果:");
for(int i=0;i<L->length;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
void findindex(int num,SqList *L)//按值查找
{
printf("按值查找://查找%d的位置\n",num);
int index=0,n=0;
for(int i=0;i<L->length;i++)
{
if(num==L->data[i])
{
index=i+1;
n++;
printf("第%d个%d在第%d个元素,也就是data[%d]\n",n,num,index,index-1);
}
}
if(index==0)
printf("没找到!\n");
}
void location(int n,SqList *L)//按标号查找
{
printf("按标号查找://标号%d\n",n);
for(int i=0;i<L->length;i++)
{
if((i)==n)
printf("data[%d]=%d\n",n,L->data[i]);
}
}
SqList *Insert(Elemtype num,Elemtype n,SqList *L)//按下标插入
{
printf("插入的值://%d\n",num);
printf("插入的下标://data[%d]\n",n);
L->length++;
for(int j=L->length-1;j>n;j--)
{
L->data[j]=L->data[j-1];
}
L->data[n]=num;
return L;
}
SqList *Delete1(Elemtype num,SqList *L)//按值删除
{
printf("按值删除://删除%d\n",num);
for(int i=0;i<(L->length);i++)
{
if(num==(L->data[i]))
{
for(int j=i;j<(L->length);j++)
{
L->data[j]=L->data[j+1];
}
i--;
L->length--;
}
}
return L;
}
SqList *Delete2(Elemtype n,SqList *L) //按下标删除
{
printf("按下标删除://下标%d----删除data[%d]\n",n,n);
for(int i=n;i<L->length;i++)
{
L->data[i]=L->data[i+1];
}
L->length--;
return L;
}
SqList *Change1(Elemtype num,Elemtype ch,SqList *L)//按值修改
{
printf("按值修改://%d->%d\n",num,ch);
for(int i=0;i<L->length;i++)
{
if(num==L->data[i])
{
L->data[i]=ch;
}
}
return L;
}
SqList *Change2(Elemtype num,Elemtype n,SqList *L)
{
printf("按下标修改://下标%d修改为%d\n",n,num);
for(int i=0;i<L->length;i++)
{
if(n==i)
{
L->data[i]=num;
break;
}
}
return L;
}
/*SqList *Dest(SqList *L)//销毁线性表
{
free(L);
L=NULL;
return L;
}*/
int main(int argc, char *argv[])
{
SqList *L=CreateSq();
logput(L);
findindex(5,L);
location(6,L);
Insert(20,6,L);
logput(L);
Delete2(6,L);
logput(L);
Delete1(0,L);
logput(L);
Change1(6,20,L);
logput(L);
Change2(30,6,L);
logput(L);
// Dest(L);
logput(L);
return 0;
}
