线性表顺序结构及相应操作
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10
//数据类型定义//
typedef struct {int elem[maxsize];int length;}sqlist;
typedef int status;
//函数调用声明//
void init (sqlist *L);
void enter (sqlist *L,int n);
int delete_(sqlist *L ,int t);
int find (sqlist *L);
void print (sqlist*L);
int add (sqlist *L,int t,int o);
int n;//实际下标//
sqlist L;
int main()
{
int c,t,y,x;
init (&L);
printf ("输入几个数:\n");
scanf ("%d",&n);
enter (&L,n);
c=find (&L);
if (c!=1)
printf ("error\n");
printf ("%删除第?个数\n");
scanf ("%d",&t);
delete_(&L,t);
print (&L);
printf ("插入第?个位置:");
scanf ("%d%d",&y,&x);
add (&L,y,x);
print (&L);
return 0;
}
//初始化//
void init (sqlist *L)
{
(*L).length=0; //表长置空//
printf ("初始化成功\n");
}
void print (sqlist*L)
{
int i; //输出//
for (i=0;i<(*L).length;i++)
{
printf ("%d ",(*L).elem[i]);
}
}
void enter (sqlist *L,int n)
{
int i,t;
if (n<1||maxsize<n) //判断表长是否合法//
{
printf ("error\n");
exit (1);
}
for (i=0;i<n;i++)
{ //循环输入//
scanf ("%d",&t);
(*L).elem[i]=t;
(*L).length++; //输入一次表长加一//
}
printf ("表长:%d\n",(*L).length);
printf ("完毕\n");
}
int find (sqlist *L)
{
int t,i; //通过循环进行位置查找//
printf ("查找第?个数\n");
scanf ("%d",&t);
for (i=0;i<(*L).length;i++)
{
if (i==(t-1))
{
printf ("%d\n",(*L).elem[i]);
printf ("完毕\n");
return 1;
}
}
}
int delete_(sqlist *L ,int t) //删除//
{
int i;
for (i=t-1;i<(*L).length;i++)
{
(*L).elem[i]=(*L).elem[i+1];
}
(*L).length--;
return 1;
}
int add (sqlist *L,int t,int o)
{ //插入//
int i;
for (i=(*L).length-1;i>=t-1;i--)
{
(*L).elem[i+1]=(*L).elem[i];
}
(*L).elem[t-1]=o;
(*L).length++;
return 1;
}