#include<stdio.h>
#include<stdlib.h>
#define INIT_SIZE 100 /*线性表存储空间的初始分配量*/#define INCREMENT 10 /*线性表存储空间的分配增量*/
//student结构体定义
typedef struct
{
char sno[15]; //学号
char sname[15]; //姓名
char sex[6]; //性别
int score; //专业
}student;
//SqList结构体类型定义
typedef student ElemType; /*定义元素类型为student*/
typedef struct {
ElemType *elem; /*存储空间的基地址*/
int length; /*当前长度*/
int listsize; /*当前分配的存储容量(以sizeof(ElemType)为单位)*/
}SqList;
//顺序表的初始化
int InitList_Sq(SqList *L)
/*初始化顺序表,成功返回1,失败返回0*/
{
L->elem = (ElemType *)malloc(INIT_SIZE * sizeof(ElemType));
if (!L->elem) return 0; /*初始化失败*/
L->length = 0;
L->listsize = INIT_SIZE;
return 1; /*初始化成功*/
}
//顺序表元素浏览
int ListDisplay_Sq(SqList*L)
{
int i;
if (L->length == 0)
{
printf("当前为空表!\n");
return 0;
}
printf("**显示所有学生信息**\n");
printf("学号: 姓名: 课程名: 课程成绩: \n");
for (i = 0; i<L->length; i++)
{
printf("%-11s%-11s%-12s%-11d\n", L->elem[i].sno, L->elem[i].sname, L->elem[i].sex, L->elem[i].score);
}
return 1;
}
//顺序表插入元素
int ListInsert_Sq(SqList *L, int i, ElemType e)
/*在顺序表L的第i个位置之前插入新的元素e,若插入成功则返回1,否则返回0*/
{
int j;
ElemType *newbase;
if (i<0 || i>L->length)