#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 /*线性表的最大长度*/
typedef int ElemType;
//描述线性表
typedef struct
{
ElemType data[MAXSIZE];
int length; /*当前表的长度*/
} SeqList;
//创建线性表
SeqList *init_SeqList()
{
SeqList*L;
L=(SeqList*)malloc(sizeof(SeqList));
L->length=0;
return L;
}
// 插入
void InsertList(SeqList *L, int i, ElemType e)
{
int k;
if (L->length==MAXSIZE)
{
printf("The table is overflow!"); /*表空间已满,不能插入*/
return;
}
if (i<0||i>L->length)
{
printf("The position is mistake!");
return;
}
for(k=L->length-1;k>=i;k--)
{
L->data[k+1]=L->data[k];/* 结点移动 */
L->data[i]=e;
L->length++;
}
}
//删除元素
int sqListDelete (SeqList *L,int i) //???????
{
int k;
if(i<1 || i>=L->length)/*检查删除位置的合法性*/
{ printf ("The position is mistake!"); return 0; }
for(k=i-1;k<L->length-1;k++)
L->data[k]=L->data[k+1]; /*向前移动*/
L->length--;
return i;
}
//
int SqlistLcate(SeqList L,ElemType x) //??????
{ int i=0;
for(i=0;i<L.length;i++)
if (L.data[i]==x)
return i; /*返回的是存储位置(下标)*/
return -1;
}
//主函数
int main()
{
int x,loc;
int i=0;
SeqList list;
*init_SeqList(&list);
//添加10个数字给线性表list
for (i=0; i<10; i++)
{
printf("please input numbers");
scanf ("%d",&x);
InsertList(&list,i+1,x);
}
for (i=0;i<list.length;i++)
printf ("%3d",list.data[i]);
//在第2个位置插入一个元素-1
InsertList(&list, 2, -1);
for (i=0;i<list.length;i++)
{printf ("%3d",list.data[i]);
}
//删除第5个
sqListDelete(&list,5);
for (i=0;i<list.length;i++)
printf ("%3d",list.data[i]);
//查找
loc=SqlistLcate(list,4);
printf ("%d",loc);
return 0;
}