严蔚敏版数据结构是本好书!
少废话咯,直接上代码研究吧!
代码不难,重在理解
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
//定义好书的数据类型 Book类型
typedef struct
{
char name[20];
char no[10];
float price;
}Book;
//定义顺序表结构
typedef struct
{
Book *p;
int length;
}SqList;
//初始化顺序表
int InitList(SqList &L)
{
L.p=new Book[100];
L.length=0;
return OK;
}
//顺序表取值
int GetElem(SqList L,int i,Book &e)
{
if(i<1||i>L.length)
{
printf("传入i值不合理!");
return ERROR;
}
e=L.p[i-1];
return OK;
}
//查找元素
int LocateElem(SqList L,Book e)
{
int i;
for(i=0;i<L.length;i++)
{
if(L.p[i].price==e.price)//这里本来还要判断其他内容是否相等,但是C语言字符串的判断挺麻烦
return i+1; // 这儿作为练习,就省略,简单起见额,判断也不难,写个函数即可
} return -1;
}
//插入元素
int InsertElem (SqList &L,int i,Book e)
{
if(i<1||i>L.length+1)
{
printf("传入i值不合理!");
return ERROR;
}
if(L.length==100)
{
printf("当前顺序表储存空间已满!");
return ERROR;
}
int j;
for (j=L.length-1;j>=i-1;j--)
{
L.p[j+1]=L.p[j];
}
L.p[i-1]=e;
++L.length;
return OK;
}
//删除元素
int DeleteElem(SqList &L,int i)
{
int j;
if(i<1||i>L.length+1)
{
printf("传入i值不合理!");
return ERROR;
}
for (j=i;j<L.length-1;j++)
{
L.p[j-1]=L.p[j];
}
--L.length;
return OK;
}
//输入元素
void InputElem(SqList &L,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入书本信息:");
scanf("%s",&L.p[i].name);
scanf("%s",&L.p[i].no);
scanf("%f",&L.p[i].price);
}
L.length=n;
}
//输出顺序表
void PrintElem(SqList L)
{
int i;
for(i=0;i<L.length;i++)
{
printf("The -NO-%d-Book: ",i+1);
printf("%s ",L.p[i].name);
printf("%s ",L.p[i].no);
printf("%.2f \n",L.p[i].price);
}
}
int main()
{ Book a,b ; //作为插入的元素
SqList L;
InitList(L); //创建顺序表
InputElem(L,3); //输入初始值,三个元素
PrintElem(L); //打印一下看看
//给 a 赋值
strcpy(a.name,"666");
strcpy(a.no,"666");
a.price=6.66;
printf("\n---------------插入a元素在第二个位置---------------\n");
InsertElem(L,2,a);//插入元素
PrintElem(L); //打印看看插入是否成功
//打印看看查询是否成功
printf("\n------------a元素在第%d个位置!-------------\n" );
//取位置是二的元素的对象
printf("\n------------取出位置为二的元素给b变量-------------\n" );
GetElem(L,2,b);
printf("\n b_name:%s,b_no:%s,b_price:%.2f\n",b.name,b.no,b.price);
//删除a元素
printf("\n------------将a元素删除后的顺序表-------------\n" );
DeleteElem(L,2);
PrintElem(L);
return 0;
}

如有错误,还请多多指教,指正,谢谢