list.h
01.#ifndef LIST_H_INCLUDED
02.#define LIST_H_INCLUDED
03.
04.#define MaxSize 50
05.typedef int ElemType;
06.typedef struct
07.{
08. ElemType data[MaxSize];
09. int length;
10.} SqList;
11.void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表
12.void InitList(SqList *&L);//初始化线性表InitList(L)
13.void DestroyList(SqList *&L);//销毁线性表DestroyList(L)
14.bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)
15.int ListLength(SqList *L);//求线性表的长度ListLength(L)
16.void DispList(SqList *L);//输出线性表DispList(L)
17.bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)
18.int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)
19.bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)
20.bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED
21.#endif
list.cpp
01.#include <stdio.h>
02.#include <malloc.h>
03.#include "list.h"
04.
05.//用数组创建线性表
06.void CreateList(SqList *&L, ElemType a[], int n)
07.{
08. int i;
09. L=(SqList *)malloc(sizeof(SqList));
10. for (i=0; i<n; i++)
11. L->data[i]=a[i];
12. L->length=n;
13.}
14.
15.//初始化线性表InitList(L)
16.void InitList(SqList *&L) //引用型指针
17.{
18. L=(SqList *)malloc(sizeof(SqList));
19. //分配存放线性表的空间
20. L->length=0;
21.}
22.
23.//销毁线性表DestroyList(L)
24.void DestroyList(SqList *&L)
25.{
26. free(L);
27.}
28.
29.//判定是否为空表ListEmpty(L)
30.bool ListEmpty(SqList *L)
31.{
32. return(L->length==0);
33.}
34.
35.//求线性表的长度ListLength(L)
36.int ListLength(SqList *L)
37.{
38. return(L->length);
39.}
40.
41.//输出线性表DispList(L)
42.void DispList(SqList *L)
43.{
44. int i;
45. if (ListEmpty(L)) return;
46. for (i=0; i<L->length; i++)
47. printf("%d ",L->data[i]);
48. printf("\n");
49.}
50.
51.//求某个数据元素值GetElem(L,i,e)
52.bool GetElem(SqList *L,int i,ElemType &e)
53.{
54. if (i<1 || i>L->length) return false;
55. e=L->data[i-1];
56. return true;
57.}
58.
59.//按元素值查找LocateElem(L,e)
60.int LocateElem(SqList *L, ElemType e)
61.{
62. int i=0;
63. while (i<L->length && L->data[i]!=e) i++;
64. if (i>=L->length) return 0;
65. else return i+1;
66.}
67.
68.//插入数据元素ListInsert(L,i,e)
69.bool ListInsert(SqList *&L,int i,ElemType e)
70.{
71. int j;
72. if (i<1 || i>L->length+1)
73. return false; //参数错误时返回false
74. i--; //将顺序表逻辑序号转化为物理序号
75. for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置
76. L->data[j]=L->data[j-1];
77. L->data[i]=e; //插入元素e
78. L->length++; //顺序表长度增1
79. return true; //成功插入返回true
80.}
81.
82.//删除数据元素ListDelete(L,i,e)
83.bool ListDelete(SqList *&L,int i,ElemType &e)
84.{
85. int j;
86. if (i<1 || i>L->length) //参数错误时返回false
87. return false;
88. i--; //将顺序表逻辑序号转化为物理序号
89. e=L->data[i];
90. for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移
91. L->data[j]=L->data[j+1];
92. L->length--; //顺序表长度减1
93. return true; //成功删除返回true
94.}
main.cpp
01.#include "list.h"
02.int main()
03.{
04. SqList *sq;
05. ElemType x[6]= {5,8,7,2,4,9};
06. CreateList(sq, x, 6);
07. DispList(sq);
08. return 0;
09.}
运行结果:
个人心得:
顺序表得建立是一件很有趣得事情,通过看了视频加上训练越来越喜欢这门课程