1、现在有10名学生的信息存在一个数组中,每个学生的信息包含学号(int),成绩(float);请利用栈将这组学生的信息逆置。
1、现在有10名学生的信息存在一个数组中,每个学生的信息包含学号(int),成绩(float);请利用栈将这组学生的信息逆置。#include <stdio.h>
#define maxlen 20
typedef float datatype;
typedef struct{
datatype data[maxlen];
int top;
}Seqstack;
void initstack(Seqstack *s)
{
s->top=-1;
return ;
}
int emptystack(Seqstack *s)
{
return (s->top==-1);
}
int push (Seqstack *s,datatype x)
{
if(s->top==maxlen-1)
{
printf("无法入栈\n");
return 0;
}
s->top++;
s->data[s->top]=x;
return 1;
}
int pop(Seqstack *s,datatype *x,datatype *y)
{
if (emptystack(s))
{
printf("栈空,无法出栈\n");
return 0;
}
*x=s->data[s->top];
s->top--;
return 1;
}
void inversion (int x[10],float y[10])
{
Seqstack z;
int i;
initstack(&z);
for (i=0;i<10;i++)
{
push(&z,x[i]);
push(&z,y[i]);
}
for (i=0;i<10;i++)
{
pop(&z,&x[i],&y[i]);
}
return ;
}
int main()
{ int i;
int a[10];
float b[10];
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<10;i++)
{
scanf("%f",&b[i]);
}
for(i=0;i<10;i++)
{
printf("学号是%d,成绩是%.2f\n",a[i],b[i]);
}
inversion (a,b);
//inversion (b);
for(i=0;i<10;i++)
{
printf("学号是%d,成绩是%.2f\n",a[i],b[i]);
}
return 0;
}
求助,不会