赞
踩
数据结构实验一 顺序表的应用
一、实验目的
1、掌握建立顺序表的基本方法。
2、掌握顺序表的插入、删除算法的思想和实现,并能灵活运用
二、实验内容
用顺序表实现病历信息的管理与查询功能。具体要求如下:
1. 利用教材中定义顺序表类型存储病人病历信息(病历号,姓名,症状);要求使用头文件。
2.设计顺序表定位查找算法,写成一个函数,完成的功能为:在线性表L中查找数据元素x,如果存在则返回线性表中和x值相等的第1个数据元素的序号;如果不存在,则返回-1。
函数定义为 int ListFind(SequenceList L,char *x)
请在主函数中测试查找是否存在姓名为x的病人,并根据返回的序号打印出病人信息。
三 实验代码
- #include<stdio.h>
- #include<string.h>
- #define MaxSize 100
- #define N 2
- typedef struct
- {
- char number[5];
- char name[20];
- int age;
- char sex[5];
- char symptom[50];
- }patient;
-
- typedef patient ElemType;
- #include"SequenceList.h"
-
- int main()
- {
- patient s;
- SequenceListm mylist;/*建立顺序表*/
- int i;
- ListInitialize (&mylist); /*顺序表初始化*/
- for(i=0;i<N;i++)
- {
- printf("------请输入第%d个病人的信息\n",i+1);
- printf("请输入第%d个病人的病历号:",i+1);
- scanf("%s", s.number);
- printf("请输入第%d个病人的姓名:",i+1);
- scanf("%s", s.name);
- printf("请输入第%d个病人的年龄:",i+1);
- scanf("%d", &s.age);
- printf("请输入第%d个病人的性别:",i+1);
- scanf("%s" ,s. sex);
- printf("请输入第%d个病人的症状:",i+1);
- scanf("%s", s.symptom);
- ListInsert (&mylist, i,s);
- }/*插入到顺序表中*/
- printf("\n***********顺序表中的数据*************\n");
- printf ("病历号\t\t姓名\t\t年龄\t\t性别\t\t症状\n");
- for (i=0;i<ListLength(mylist);i++)
- {
- ListGet (mylist,i,&s);
- 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);
- }
- printf("\n***********查找顺序表中的数据*************\n");
- int qq;
- scanf("%s",s.name );
- qq=ListFind(mylist,s.name );/*查找病人*/
- if(qq==-1)
- printf("无此病人信息!\n");
- else
- {
- ListGet(mylist,qq,&s);
- printf ("病历号\t\t姓名\t\t年龄\t\t性别\t\t症状\n");
- 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);
- }
- return 0;
- }
- 头文件
- typedef struct
- {
- ElemType list[MaxSize];
- int size;
- }SequenceListm;
- SequenceListm L;
- void ListInitialize(SequenceListm *L)
- {
- L->size =0;
- }
- int ListLength(SequenceListm L)
- {
- return L.size ;
- }
- int ListInsert(SequenceListm *L ,int i,ElemType x)
- {
- int j;
- if(L->size>=MaxSize)
- {
- printf("顺序表已满无法插入!\n");
- return 0;
- }
- else if(i<0||i>L->size)
- {
- printf("参数i不合法\n");
- return 0;
- }
- else
- {
- for(j=L->size;j>i;j--)
- L->list[j]=L->list[j-1];
- L->list[i]=x;
- L->size++;
- return 1;
- }
- }
- int ListDelete(SequenceListm *L,int i,ElemType *x)
- {
- int j;
- if(L->size <=0)
- {
- printf("顺序表已无数据可删!\n");
- return 0;
- }
- else if(i<0||i>L->size-1)
- {
- printf("参数不合法");
- return 0;
- }
- else
- {
- *x=L->list[i];
- for(j=i+1;j<=L->size -1;j++)
- L->list[j-1]=L->list[j];
- L->size --;
- return 1;
- }
- }
- int ListGet(SequenceListm L ,int i,ElemType *x)
- {
- if(i<0||i>L.size-1)
- {
- printf("参数i不合法!\n");
- return 0;
- }
- else
- {
- *x=L.list[i];
- return 1;
- }
- }
- int ListFind(SequenceListm L,char *x)
- {
- int i,a=-1;
- for(i=0;i<=L.size;i++ )
- {
- if( strcmp(L.list [i].name,x)==0)
- {
- a=i ;
- return a;
- }
- }
- if(a==-1)
- return -1;
- }
四 实验结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。