线性表之顺序结构
线性表的顺序存储是指⽤⼀组地址连续的存储单元依次存储线性表中各元素,使得线性表在逻辑结构上相邻的元素存储在连续的物理存储单元中,即:通过数据元素物理存储的连续性来反应元素之间逻辑上的相邻关系。采⽤顺序存储结构存储的线性表通常简称为顺序表。
顺序存储的线性表的特点:
线性表的逻辑顺序与物理顺序⼀致;
协商英语数据元素之间的关系是以元素在计算机内“物理位置相邻”来体现。
1. 定义结构体
#define MAXSIZE 45
typedef struct {
int id;
char name[64];
int age;
}Student;
//顺序表结构
typedef struct
{
Student info[MAXSIZE];
int len;
}SqList;
2. 初始化顺序表
//初始化顺序表
void InitList(SqList *L)
{
bec商务英语教材L->len = 0;
}
3. 判断顺序表是否空
百度翻译在线//判空
int ListEmpty(SqList *L)
{
return (L->len == 0);
}
留学中介 迈格森4. 判断顺序表是否满
//判满
int ListFull(SqList *L)sadu
{
return (L->len == MAXSIZE);
}
5. 清空顺序表
//清空顺序表
void ClearList(SqList *L)
{
L->len = 0;
}
6. 返回顺序表长度
/
/获取顺序表长度
int ListLength(SqList *L)
{
return L->len;
}
7. 获取指定id的元素
//获取指定id的元素
int GetListElem(SqList *L,int id,Student *e) {
int i;
if(ListEmpty(L))
return -1;
for(i=0; i<L->len; i++) {
if(L->info[i].id == id)
break;
}
if(i >= L->len)
return -1;
*e = L->info[i];
return 0;
女生英文qq名
}
8. 删除指定id的元素
//删除指定id的元素
int ListDelete(SqList *L,int id)
{
int i,k;hbs
if (ListEmpty(L))
return -1;
for(i=0; i<L->len; i++) {
if(L->info[i].id == id)
break;
}
if(i >= L->len)
return -1;
/
/删除的不是最后位置
if (i < (L->len-1)){
for(k=i; k<L->len; k++)
L->info[k] = L->info[k+1];//将删除位置后继元素前移
}
L->len--;
return 0;
}
9. 遍历顺序表
void ListTraver(SqList *L)
{
int i;
for(i=0; i<L->len; i++)
printf("id:%d\tname:%s\tage:%d\n",L->info[i].id,L->info[i].name,L->info[i].age); printf("\n");
}
10. 追加数据
//追加数据
int ListAppend(SqList *L, Student *e)
{
if(ListFull(L))
return -1;
L->info[L->len++] = *e;
return 0;
}圣诞歌曲有哪些
11. 测试程序
int main()
{
SqList L;
Student stu[5] = {
{1,"zhangsan",20},
{2,"lisi",21},
{3,"wangwu",19},
{4,"liliu",22},
{5,"qiba",21}
};
InitList(&L);
int i;
for(i=0; i<5; i++)
ListAppend(&L, &stu[i]);
printf("List len=%d\n",ListLength(&L)); ListTraver(&L);
printf("delete student id=%d\n",3);
ListDelete(&L, 3);
ListTraver(&L);
return 0;
}
软件设计培训完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 45
typedef struct {
int id;
char name[64];
int age;
}Student;
//顺序表结构
typedef struct
{
Student info[MAXSIZE];
int len;
}SqList;
//初始化顺序表
void InitList(SqList *L)
{
L->len = 0;
}
//判空
int ListEmpty(SqList *L)
{
return (L->len == 0);
}
//判满
int ListFull(SqList *L)
{
return (L->len == MAXSIZE);
}
}
//清空顺序表
void ClearList(SqList *L)
{
L->len = 0;竞争力英文
}
//获取顺序表长度
int ListLength(SqList *L)
{
return L->len;
}
//获取指定id的元素
int GetListElem(SqList *L,int id,Student *e)
{
int i;
if(ListEmpty(L))
return -1;
for(i=0; i<L->len; i++) {
if(L->info[i].id == id)
break;
}
if(i >= L->len)
return -1;
*e = L->info[i];
return 0;
}
//删除指定id的元素
int ListDelete(SqList *L,int id)
{
int i,k;
if (ListEmpty(L))
return -1;
for(i=0; i<L->len; i++) {
if(L->info[i].id == id)
break;
}
if(i >= L->len)
return -1;
//删除的不是最后位置
if (i < (L->len-1)){
for(k=i; k<L->len; k++)
L->info[k] = L->info[k+1];//将删除位置后继元素前移
}
L->len--;
return 0;
}
void ListTraver(SqList *L)
{
int i;
for(i=0; i<L->len; i++)
printf("id:%d\tname:%s\tage:%d\n",L->info[i].id,L->info[i].name,L->info[i].age); printf("\n");