#include\#include\#include\#include \#define NULL 0 typedef struct node { char city_na[10]; int x; int y; }city;
typedef struct citynode { city ct; struct citynode *next; }citylist;
void creatcitylist(citylist *head) { citylist *p,*r; int i,n; r=head; printf(\ scanf(\ for(i=1;i<=n;i++) { p=(citylist *)malloc(sizeof(citylist)); printf(\ scanf(\ printf(\ scanf(\ scanf(\ p->next=r->next; r->next=p; r=p; } }
void outputcitylist(citylist *head) { citylist *p; p=head->next; printf(\ while(p!=NULL) { printf(\
printf(\ p=p->next; } }
void searchcity(citylist *head) { citylist *p; char str[10]; p=head->next; printf(\ scanf(\ while(p!=NULL) { if(strcmp(p->ct.city_na,str)==0) { printf(\ } p=p->next; } }
void returncity(citylist *head) { int x,y,d; int dis; citylist *p; p=head->next; printf(\ scanf(\ printf(\ scanf(\ while(p!=NULL) { dis=sqrt((p->ct.x)*(p->ct.x)+(p->ct.y)*(p->ct.x))-sqrt(x*x+y*y);//computer the distance if(dis < d) { printf(\ } p=p->next; } }
void main() { citylist *head; head=(citylist *)malloc(sizeof(citylist)); head->next=NULL;
}
//creating citylist creatcitylist(head); outputcitylist(head); //searching city searchcity(head);
//Having known a position and distance d,search the city that distance is maller than d returncity(head);
实验内容
一、顺序存储结构 1.顺序表基本操作的实现
当我们要在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若要删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。 2.两个线性表的合并运算
已知线性表La和Lb,求La=La∩Lb。
3.已知两个有序表La和Lb,把两个有序表合并成仍然有序的线性表Lc. 代码:
#include\#include\#define Maxsize 50
//线性表顺序存储的结构定义 typedef struct listnode {
int computer[Maxsize];//假设线性表中存放的是学校每年计算机的拥有量 int length;//线性表的长度 }sqlist;
void initlist(sqlist *la) //初始化线性表 {
int i=0; int x;
scanf(\while(x!=0) {
la->computer[i]=x; i=i+1;
scanf(\
}
la->length =i; }
void outputlist(sqlist *la)//输出线性表中的数据元素 { int i; }
void Insert(sqlist *la,int i,int x)// 已知线性表la,线性表la已经存在,在线性表的第i个位置插入一个数据元素x,线性表的长度加1. {
if (i>la->length+1) printf(\int j; i=i-1;
printf(\for(i=0;i
printf(\
printf(\列表的长度:%d\\n\printf(\
printf(\
for(j=la->length-1;j>=i;j--) } }
void Delete(sqlist *la,int i)// 删除线性表第i个位置上的数据元素,线性表的长度减
la->computer[i]=x; la->length=la->length+1; {
la->computer[j+1]=la->computer[j];
1 { }
int Select1(sqlist *la,int i)// //线性表la已经存在,读取第i个位置上的元素 { }
int Select2(sqlist *la,int e)// 线性表la已经存在,在线性表中查找值等于e的数据元素,如果存在这样的元素,则返回它的位置,如果不存在,则返回0. { }
void Union(sqlist *la,sqlist *lb)//两个线性表的合并运算 {
int i,e,j; int i,flag=0;
for(i=0;i
if (flag==0)
return 0;
if (la->computer[i]==e) { }
flag=1; return i+1;
return la->computer[i-1]; int j;
if (i<1 || i>la->length) printf(\for(j=i;j
la->computer[j-1]=la->computer[j]; la->length=la->length-1;