顺序表应用
来源:互联网 发布:java记事本源代码 编辑:程序博客网 时间:2024/06/04 17:46
#define MaxSize 50 02.typedef int ElemType; 03.typedef struct 04.{ 05. ElemType data[MaxSize]; 06. int length; 07.} SqList; 08.void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表 09.void InitList(SqList *&L);//初始化线性表InitList(L) 10.void DestroyList(SqList *&L);//销毁线性表DestroyList(L) 11.bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L) 12.int ListLength(SqList *L);//求线性表的长度ListLength(L) 13.void DispList(SqList *L);//输出线性表DispList(L) 14.bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e) 15.int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e) 16.bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e) 17.bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED list.cpp[cpp] view plain copy 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[cpp] view plain copy 01.#include "list.h" 02.#include <stdio.h> 03. 04.//删除线性表中,元素值在x到y之间的元素 05.void delx2y(SqList *&L, ElemType x, ElemType y) 06.{ 07. int k=0,i; //k记录非x的元素个数 08. ElemType t; 09. if(x>y) 10. { 11. t=x; 12. x=y; 13. y=t; 14. } 15. for (i=0; i<L->length; i++) 16. if (L->data[i]<x || L->data[i]>y ) //复制不在[x, y]之间的元素 17. { 18. L->data[k]=L->data[i]; 19. k++; 20. } 21. L->length=k; 22.} 23. 24.//用main写测试代码 25.int main() 26.{ 27. SqList *sq; 28. ElemType a[10]= {5,8,7,0,2,4,9,6,7,3}; 29. CreateList(sq, a, 10); 30. printf("删除前 "); 31. DispList(sq); 32. 33. delx2y(sq, 4, 7); 34. 35. printf("删除后 "); 36. DispList(sq); 37. return 0; 38.}
0 0
- 顺序表应用实例
- 顺序表应用举例
- 顺序表应用举例
- 顺序表应用
- 顺序表应用-奇偶
- 顺序表的应用
- 顺序表的应用
- 顺序表的应用
- 顺序表的应用
- 数据结构顺序表应用
- 顺序表应用
- 顺序表应用 2
- 简单顺序表应用
- 顺序表及其应用
- 顺序表应用 有序顺序表 归并
- 顺序表的应用举例
- 顺序表应用(1)
- 顺序表应用(2)
- 常见排序算法的稳定性
- sleep() 和 wait() 的区别
- cf 50A. Domino piling 贪心
- 南阳oj 254 编号统计
- ConnectionManager.getConnection() failed to obtain a connection after 11 retries. The exception from
- 顺序表应用
- HTML哪些是块状元素,哪些是内联元素
- 软件生存期介绍
- 贝叶斯思维——chapter4(估计进阶)
- 字典树
- 运算符优先级
- java web项目利用freemarker导出word文件小例子
- eclipse中不能找到dubbo.xsd解决办法
- 文章标题