数据结构实验一

#include <stdio.h>
#include <stdlib.h>

typedef struct Node{
 float shi;
 float xu;
 struct Node *next;
}Node,*Linklist;

void insert(Linklist L,float a,float b){
 Linklist p,q;
 p=L;
 while(p->next)
  p=p->next;
 q=(Linklist)malloc(sizeof(Node));
 q->shi=a;
 q->xu=b;
 q->next=NULL;
 p->next=q;
 p=q;
}
void search(Linklist L,int count){
 Linklist p;
 p=L;
 while(count){
  p=p->next;
  count--;
 }
 printf("%f+%fi\n",p->shi,p->xu);
}
void plus(Linklist L,int count,int countt){
 Linklist p,q;
 p=L;
 q=L;
 while(count){
  p=p->next;
  count--;
 }
 while(countt){
  q=q->next;
  countt--;
 }
 printf("%f+%fi\n",p->shi+q->shi,p->xu+q->xu);
}
void jian(Linklist L,int count,int countt){
 Linklist p,q;
 p=L;
 q=L;
 while(count){
  p=p->next;
  count--;
 }
 while(countt){
  q=q->next;
  countt--;
 }
 printf("%f+%fi\n",p->shi-q->shi,p->xu-q->xu);
}
void ji(Linklist L,int count,int countt){
 Linklist p,q;
 p=L;
 q=L;
 while(count){
  p=p->next;
  count--;
 }
 while(countt){
  q=q->next;
  countt--;
 }
 printf("%f+%fi\n",p->shi*q->shi-p->xu*q->xu,p->xu*q->shi+q->xu*p->shi);
}
void searchshi(Linklist L,int count){
 Linklist p;
 p=L;
 while(count){
  p=p->next;
  count--;
 }
 printf("实部是%f\n",p->shi);
}
void searchxu(Linklist L,int count){
 Linklist p;
 p=L;
 while(count){
  p=p->next;
  count--;
 }
 printf("虚部是%f\n",p->xu);
}


 void main(){
  printf("数据结构实验一复数\n");
  printf("操作及编号如下:\n1.输入实部和虚部生成一个复数\n2.查看已输入的复数\n");
  printf("3.两复数求和\n");
  printf("4.两复数求差\n");
  printf("5.两复数求积\n");
  printf("6.分离出实部\n");
  printf("7.分离出虚部\n");
  printf("0.退出\n");
  Linklist L;
  L=(Linklist)malloc(sizeof(Node));
  L->next=NULL;
  int i,j;
  int count=0,countt=0,choice=0;
 
  while(1){
   printf("输入操作编号\n");
   scanf("%d",&choice);
   if(!(choice))
    break;
   switch(choice){
   case 1:{
    printf("分别输入实部,虚部\n");
    scanf("%d",&i);
    scanf("%d",&j);
    insert(L,i,j);
    break;
   }
   case 2:{
    printf("输入要查看第几个复数\n");
    scanf("%d",&count);
    search(L,count);
    break;
   }
   case 3:{
    printf("分别输入求和两复数的序号,先小后大\n");
    scanf("%d",&count);
    scanf("%d",&countt);
    plus(L,count,countt);
    break;
   }
      
   case 4:{
    printf("分别输入求差两复数的序号\n");
    scanf("%d",&count);
    scanf("%d",&countt);
    jian(L,count,countt);
    break;
   }
   case 5:{
    printf("分别输入求积两复数序号\n");
    scanf("%d",&count);
    scanf("%d",&countt);
    ji(L,count,countt);
    break;
   }
   case 6:{
    printf("输入查看哪个数的实部\n");
    scanf("%d",&count);
    searchshi(L,count);
    break;
   }

    
   case 7:{
    printf("输入查看哪个数的虚部\n");
    scanf("%d",&count);
    searchxu(L,count);
    break;
   }
  }
 }
}

 

猜你喜欢

转载自www.cnblogs.com/P201821430020/p/11790880.html