赞
踩
一、
1、顺序表的优点:
(1)存储空间连续,方便随时访问;
(2)结构简单,易于理解;
(3)易于尾插或尾删和修改;
2、顺序表的缺点:
(1)顺序存储空间容易溢出,不便扩充;
(2)插入和删除必须移动大量元素;
二、顺序表的定义:
(1)数组静态分配(一开始就定下大小):
- #define size 10
-
- typedef struct{
- char isbn[20];
- char name[20];
- float price;
- }Book;
-
- typedef struct{
- Book elem[size];
- int length;//当前长度
- }sqlist;
(2)数组动态分配:
- #define size 10
-
- typedef struct{
- char isbn[20];
- char name[20];
- float price;
- }Book;
-
- typedef struct{
- Book *elem;
- int length;//当前长度
- }sqlist;
此时就要:
- sqlist L;
- L.elem=(Book*)malloc(sizeof(Book)*size);
三、涉及的函数
(1)构造一个空的线性表 ;
- int Init_list(sqlist *L)
- {
- L->elem = (Book *)malloc(sizeof(Book) * size);
- if (!L->elem) {
- exit(-1);
- }
- L->length = 0;
- return 1;
- }
(2)销毁线性表;
- void Destroy_list(sqlist *L)
- {
- if (L->elem) {
- free(L->elem);
- }
- }
(3)将线性表置空
- void Clear_list(sqlist *L)
- {
- L->elem = 0;
- }
(4)返回线性表中的元素个数(长度)
- int List_length(sqlist *L)
- {
- return (L->length);
- }
(5)判断线性表是否为空,若是返回1,不是返回0
- int List_empty(sqlist L)
- {
- if(L.elem==0)
- {
- return 1;
- }else
- {
- return 0;
- }
- }
(6)用e返回线性表L中的第i个元素的值(1<=i<=Listlength(L))成功返回1,失败返回0
- int Get_elem(sqlist *L, int i, Book *e)
- {
- if (i < 1 || i > L->length) {
- return 0;
- }
- *e = L->elem[i - 1];
- return 1;
- }
(7)查找与指定值相同的e的位置,若找到,返回位置序号,否则返回0
- int Locate_elem(sqlist *L, Book e)
- {
- int i;
- for (i = 0; i < L->length; i++) {
- if (memcmp(&L->elem[i], &e,
- strlen(e.isbn) + strlen(e.name) + sizeof(e.price)) == 0) {
- return (i + 1);
- }
- }
- return 0;
- }
(8)在第i个位置插入数据元素e,L的长度加一 ,成功返回1,失败返回0
- int List_insert(sqlist *L, int i, Book e)
- {
- if (i < 1 || i > L->length + 1 || L->length == size) {
- return 0;
- }
- int j;
- for (j = L->length-1; j >= i-1; j--) {
- L->elem[j+1] = L->elem[j];
- }
- L->elem[i - 1] = e;
- L->length++;
- return 1;
- }
(9)删除第i个数据元素,L长度减一 ,成功返回1,失败返回0
- int List_delete(sqlist *L, int i)
- {
- if (i < 1 || i > L->length) {
- return 0;
- }
- int j;
- for (j = i; j < L->length-1; j++) {
- L->elem[j - 1] = L->elem[j];
- }
- L->length--;
- return 1;
- }
注:(1)假设线性表中每个元素有占q个存储单元,第i个数据元素的存储位置和第i+1个数据元素的存储位置之间满足关系:
即:
eg:如果每个元素占8个存储单元, 的存储位置是2022,则 的存储位置是2030;
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。