定义:线性表是由同组数据类型组成的有限序列
特点:每个元素只有唯一前驱和后驱
基本操作:
(1) 置表空
(2) 求表长
(3) 按序号取元素
(4) 按值查找元素
(5) 判表满
(6) 插入
(7) 删除
下面是一部分顺序表的代码:
1 #pragma once 2 #include <malloc.h> 3 #define max_size 100 4 struct Sequenlist 5 { 6 int data[max_size]; 7 int last; 8 }; 9 10 void SqLsetnull(Sequenlist* q) { 11 q->last = -1; 12 } 13 Sequenlist* SqLBuild() { 14 Sequenlist* q = (Sequenlist*)malloc(sizeof(Sequenlist)); 15 q->last = -1; 16 return q; 17 } 18 int getLength(Sequenlist* q) { 19 return q->last + 1; 20 } 21 int getData(Sequenlist* q, int i) { 22 if (i > 0 && i < q->last + 1) { 23 return q->data[i - 1]; 24 } 25 else 26 { 27 return 0; 28 } 29 } 30 int getIndex(Sequenlist* q, int value) { 31 int i; 32 for (i = 0; i < getLength(q); i++) 33 { 34 if (q->data[i] == value) { 35 return i + 1; 36 } 37 } 38 return 0; 39 } 40 int isFull(Sequenlist* q) { 41 if (q->last + 1 == max_size) { 42 return 1; 43 } 44 else 45 { 46 return 0; 47 } 48 } 49 int isEmpty(Sequenlist* q) { 50 if (q->last == -1) { 51 return 1; 52 } 53 else 54 { 55 return 0; 56 } 57 } 58 int insert(Sequenlist* q, int i, int value) { 59 int y; 60 if (getLength(q) + 1 >= max_size) { 61 return 0;//存储空间满了 62 } 63 else if (i > 0 && i <= q->last + 2) { 64 for (y = i - 1; y < q->last + 1; y++) { 65 q->data[y + 1] = q->data[y]; 66 67 } 68 q->data[i - 1] = value; 69 q->last++; 70 return 1; 71 } 72 else 73 { 74 return 0;//超出范围 75 } 76 } 77 int SqLdelete(Sequenlist* q, int i) { 78 int a; 79 if (isEmpty(q)) { 80 return 0; 81 } 82 else if (i > 0 && i <= q->last + 1) { 83 for (a = i - 1; a < q->last; a++) { 84 q->data[a] = q->data[a + 1]; 85 86 } 87 q->last--; 88 return 1; 89 } 90 else 91 { 92 return 0; 93 } 94 }
原文:https://www.cnblogs.com/zhf520/p/11773527.html