
完成版数据结构实验3.docx
5页本文格式为Word版,下载可任意编辑完成版数据结构实验3 数据布局测验三的细致解释 #includestdio.h #includestdlib.h #define maxsize 100 #define false 0 #define true 1 typedef int DataType; //栈存储单元的数据类型 typedef struct //栈的布局体 { DataType data[maxsize]; int top; }*SqStack/*栈指针类型名*/,stack/*栈类型名*/; void InitStack(SqStack s)//初始化,栈数组栈顶标志设为-1即此时栈中没有元素 { s-top=-1; } int StackEmpty(SqStack s) //判断栈是否为空 { return s-top==-1? true:false ; //用此语句简化if,else的使用 } int push(SqStack s,DataType x) { if(s-top==maxsize-1) //假设栈顶元素已到达申请的最大内存 { printf(栈已满!\n); return 0; } else //栈中还有空间 { s-top++; //入栈时需将原来的栈顶加1 s-data[s-top]=x; //将值赋给已经加1的栈顶中 return 1; } } int pop(SqStack s,DataType *e)//获取栈顶元素 ,并出栈 { if(s-top==-1) //假设栈顶元素标志为空 { 数据布局测验三的细致解释 } return false; } else //不为空,即栈中还有栈顶元素 { } *e=s-data[s-top]; //将栈顶元素给传入的变量e s-top--; //栈顶元素出栈,记录栈顶元素的序号的变量自减1 return true; int output(SqStack s) //出栈 { DataType i; printf(输出栈中全体元素:); for(i=0;i=s-top;i++) //输出栈中的全体元素 printf( %5d ,s-data[i]); putchar('\n'); } void a1(SqStack s) //题目所给函数 { int i,n,a[100]; n=0; while(!StackEmpty(s))//循环判断栈是否为空 { pop(s,a[++n]);//将栈顶元素出栈,并将栈顶元素依次赋值给数组a[]。
通过这个方式实现将栈数组的元素倒置的存储在数组a[]中 } for(i=1;i=n;i++)//在利用倒置后的数组,将其值依次入栈所得的值就是原栈倒置后的元素序列 push(s,a[i]); } int main(void) { SqStack s; //定义一个栈指针变量 DataType x,e; //定义栈所存储的数据的类型变量 s=( SqStack)malloc(sizeof(stack)); //申请动态的栈空间给栈指针 if(s==NULL)//当申请失败就退出程序 { printf(申请失败\n); return 0; } 数据布局测验三的细致解释 printf(\n请输入一个数,直到输入-999终止输入:); do { scanf(%d,x); if(x==-999)//当接收的值是-999就跳出输入的循环体 break; push(s,x); //将输入的值入栈 }while(1); } printf(\n\n置换之前的栈\n); output(s);//输出当前输入完之后的栈元素 a1(s);//调用题目中的倒置函数 printf(\n\n置换之后的栈\n\n);//输出倒置后的元素 output(s); return 0; — 5 —。












