当前位置:   article > 正文

数据结构实验一 顺序表的应用_顺序表 定义病人

顺序表 定义病人

数据结构实验一 顺序表的应用

一、实验目的

1、掌握建立顺序表的基本方法。

2、掌握顺序表的插入、删除算法的思想和实现,并能灵活运用

二、实验内容

    用顺序表实现病历信息的管理与查询功能。具体要求如下:

1. 利用教材中定义顺序表类型存储病人病历信息(病历号,姓名,症状);要求使用头文件。

2.设计顺序表定位查找算法,写成一个函数,完成的功能为:在线性表L中查找数据元素x,如果存在则返回线性表中和x值相等的第1个数据元素的序号;如果不存在,则返回-1。

    函数定义为 int ListFind(SequenceList L,char *x)

请在主函数中测试查找是否存在姓名为x的病人,并根据返回的序号打印出病人信息。

三 实验代码

  1. #include<stdio.h>
  2. #include<string.h>
  3. #define MaxSize 100
  4. #define N 2
  5. typedef struct
  6. {
  7. char number[5];
  8. char name[20];
  9. int age;
  10. char sex[5];
  11. char symptom[50];
  12. }patient;
  13. typedef patient ElemType;
  14. #include"SequenceList.h"
  15. int main()
  16. {
  17. patient s;
  18. SequenceListm mylist;/*建立顺序表*/
  19. int i;
  20. ListInitialize (&mylist); /*顺序表初始化*/
  21. for(i=0;i<N;i++)
  22. {
  23. printf("------请输入第%d个病人的信息\n",i+1);
  24. printf("请输入第%d个病人的病历号:",i+1);
  25. scanf("%s", s.number);
  26. printf("请输入第%d个病人的姓名:",i+1);
  27. scanf("%s", s.name);
  28. printf("请输入第%d个病人的年龄:",i+1);
  29. scanf("%d", &s.age);
  30. printf("请输入第%d个病人的性别:",i+1);
  31. scanf("%s" ,s. sex);
  32. printf("请输入第%d个病人的症状:",i+1);
  33. scanf("%s", s.symptom);
  34. ListInsert (&mylist, i,s);
  35. }/*插入到顺序表中*/
  36. printf("\n***********顺序表中的数据*************\n");
  37. printf ("病历号\t\t姓名\t\t年龄\t\t性别\t\t症状\n");
  38. for (i=0;i<ListLength(mylist);i++)
  39. {
  40. ListGet (mylist,i,&s);
  41. printf ("%s\t\t%s\t\t%d\t\t%s\t\t%s\n",s.number, s. name, s.age, s.sex, s. symptom);
  42. }
  43. printf("\n***********查找顺序表中的数据*************\n");
  44. int qq;
  45. scanf("%s",s.name );
  46. qq=ListFind(mylist,s.name );/*查找病人*/
  47. if(qq==-1)
  48. printf("无此病人信息!\n");
  49. else
  50. {
  51. ListGet(mylist,qq,&s);
  52. printf ("病历号\t\t姓名\t\t年龄\t\t性别\t\t症状\n");
  53. printf ("%s\t\t%s\t\t%d\t\t%s\t\t%s\n",s.number, s. name, s.age, s.sex, s. symptom);
  54. }
  55. return 0;
  56. }
  57. 头文件
  58. typedef struct
  59. {
  60. ElemType list[MaxSize];
  61. int size;
  62. }SequenceListm;
  63. SequenceListm L;
  64. void ListInitialize(SequenceListm *L)
  65. {
  66. L->size =0;
  67. }
  68. int ListLength(SequenceListm L)
  69. {
  70. return L.size ;
  71. }
  72. int ListInsert(SequenceListm *L ,int i,ElemType x)
  73. {
  74. int j;
  75. if(L->size>=MaxSize)
  76. {
  77. printf("顺序表已满无法插入!\n");
  78. return 0;
  79. }
  80. else if(i<0||i>L->size)
  81. {
  82. printf("参数i不合法\n");
  83. return 0;
  84. }
  85. else
  86. {
  87. for(j=L->size;j>i;j--)
  88. L->list[j]=L->list[j-1];
  89. L->list[i]=x;
  90. L->size++;
  91. return 1;
  92. }
  93. }
  94. int ListDelete(SequenceListm *L,int i,ElemType *x)
  95. {
  96. int j;
  97. if(L->size <=0)
  98. {
  99. printf("顺序表已无数据可删!\n");
  100. return 0;
  101. }
  102. else if(i<0||i>L->size-1)
  103. {
  104. printf("参数不合法");
  105. return 0;
  106. }
  107. else
  108. {
  109. *x=L->list[i];
  110. for(j=i+1;j<=L->size -1;j++)
  111. L->list[j-1]=L->list[j];
  112. L->size --;
  113. return 1;
  114. }
  115. }
  116. int ListGet(SequenceListm L ,int i,ElemType *x)
  117. {
  118. if(i<0||i>L.size-1)
  119. {
  120. printf("参数i不合法!\n");
  121. return 0;
  122. }
  123. else
  124. {
  125. *x=L.list[i];
  126. return 1;
  127. }
  128. }
  129. int ListFind(SequenceListm L,char *x)
  130. {
  131. int i,a=-1;
  132. for(i=0;i<=L.size;i++ )
  133. {
  134. if( strcmp(L.list [i].name,x)==0)
  135. {
  136. a=i ;
  137. return a;
  138. }
  139. }
  140. if(a==-1)
  141. return -1;
  142. }

四 实验结果

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/674293
推荐阅读
相关标签
  

闽ICP备14008679号