第一次实验参考程序_顺序表程序

#include"stdio.h"

#define LISTSIZE 100
typedef int DataType;
typedef struct{
DataType items[LISTSIZE];
int length;
}SqList;

int InitList(SqList *L);//初始化
int ListLength(SqList L);//求表长
int ListEmpty(SqList L);//判断表是否为空
int ListInsert(SqList *L,int pos,DataType item);//插入
int ListDelete(SqList *L,int pos,DataType *item);//删除
int Find(SqList L,DataType item);//查找
int GetElem(SqList L,int pos,DataType *item); //取数据
int TraverseList(SqList L);//遍历
int ListInsertSort(SqList *L,DataType x);//实验1 顺序表的操作
/*设线性表中的数据元素是按值非递减有序排列的,试以顺序存储结构,
编写一算法,将x插入到线性表的适当位置上,以保持线性表的有序性。
注意,不能调用ListInsert函数*/
int ListInverse(SqList *L);//顺序表逆置 p53 四 算法设计题 1
void main()
{
SqList sql1;
int item,data[6]={5,7,3,8,2,9};
InitList(&sql1);
for(int i=0;i<6;i++)
ListInsert(&sql1,i+1,data[i]);
TraverseList(sql1);
ListDelete(&sql1,3,&item);
TraverseList(sql1);
}
int InitList(SqList *L)
{/*L为指向顺序表的指针*/
L->length=0;
return 1;
}

int ListLength(SqList L)
{/*L为顺序表*/
return L.length;
}
int ListEmpty(SqList L)
{/*L为顺序表*/
if(L.length<=0) return 1;
else return 0;
}
int ListInsert(SqList *L,int pos,DataType item)
{/*L为指向顺序表的指针,pos为插入位置,item为待插入的数据元素*/
int i;
if(L->length>=LISTSIZE){
printf("顺序表已满,无法进行插入操作!");return 0;}
if(pos<=0 || pos>L->length+1){
printf("插入位置不合法,其取值范围应该是[1,length+1]");
return 0; }
for(i=L->length-1; i>=pos-1; i--) /*移动数据元素*/
L->items[i+1]=L->items[i];
L->items[pos-1]=item; /*插入*/
L->length++; /*表长增一*/
return 1; }

int ListDelete(SqList *L,int pos,DataType *item)
{/*L为指向顺序表的指针,pos为删除位置,用于item返回被删元素*/
int i;
if(ListEmpty(*L)){
printf("顺序表为空表,无法进行删除操作!");return 0; }
if(pos<1 || pos>L->length){
printf("删除位置不合法,其取值范围应该是[1,length]");
return 0; }
*item=L->items[pos-1];
for(i=pos;ilength;i++)/*移动并删除指定数据元素*/
L->items[i-1]=L->items[i];
L->length--; /*表长减一*/
return 1;
}

int Find(SqList L,DataType item)
{/*L为顺序表,item为待查找的数据元素*/
int pos=0;
if(ListEmpty(L)){
printf("顺序表为空表,无法进行查找操作!");
return 0;
}
while(posif(poselse return 0;
}
int GetElem(SqList L,int pos,DataType *item)
{/*L为顺序表,pos为指定位置,item用于返回找到的数据元素*/
if(ListEmpty(L)) return 0;
if(pos<=0 || pos>L.length){
printf("位置信息输入不合法,请重新输入");
return

0;
}
*item=L.items[pos-1];
return 1;
}
int TraverseList(SqList L)
{/*L为顺序表*/
int i;
for(i=0;iprintf("\n");
return 1;
}

相关文档
最新文档