资源描述:
《算法与数据结构试验5.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验题目实验5姓名学号专业实验时间实验地点T704实验成绩实验性质√验证性□设计性□综合性教师评价:□实验过程正确;□实验内容提交□实验步骤合理;□实验结果正确;□操作正确;□报告规范;其他:评价教师签名:一、实验项目内容补充代码1、代码://顺序栈#include #include #include #define MAX_SIZE 255typedef struct{int id;char name[50]; //char name[50];}ElementType;typedef struct
2、SeqStack{ElementType *top; //栈顶(数组中的下标),如果为-1则证明栈的长度ElementType *base; //栈底指针int length; //}SeqStack;//初始化栈void InitSeqStack(SeqStack &seqStack){seqStack.base = (ElementType *)malloc(sizeof(ElementType) * MAX_SIZE);if(!seqStack.base) {printf("分配空间失败!");return;}seqStack.top =
3、 seqStack.base;seqStack.length=0;}//向栈中压入元素,返回压入的结果(true、false)int PushSeqStack(SeqStack &seqStack,ElementType element){if(seqStack.top - seqStack.base == MAX_SIZE){printf("压栈失败,栈已满");return 0;}*(seqStack.top) = element;seqStack.top++;seqStack.length++; return 1;}//以指针方式返回出栈的元素,返
4、回值为出栈的结果int PopSeqStack(SeqStack &seqStack,ElementType &element){if(seqStack.top == seqStack.base){printf("空栈,出栈失败! ");return 0;}seqStack.top--;element = *(seqStack.top);printf("当前出栈元素:%dt%s",element.id,element.name);seqStack.length--; return 1;}/*清空栈*/void ClearSeqStack(SeqSt
5、ack &seqStack){seqStack.top = seqStack.base;seqStack.length = 0;}/*栈是否为空 :*//*返回栈顶元素*/ElementType GetTopStack(SeqStack &seqStack){if(seqStack.top != seqStack.base);{return *(seqStack.top -1);}}ElementType datas[] = {{1,"韦小宝"},{2,"韦虎头"},{3,"韦春花"},{4,"韦铜锤"}};void TestSeqStack(){SeqSta
6、ck stack;ElementType element;InitSeqStack(stack);for(int i = 0;i < 4;i++){printf("当前入栈:%dt%s",datas[i].id,datas[i].name);PushSeqStack(stack,datas[i]);}element = GetTopStack(stack);printf("取栈顶的元素,当前栈顶元素为:%dt%s",element.id,element.name);PopSeqStack(stack,datas[0]);for(int j =
7、0;j < stack.length;j++){stack.top--;element = *(stack.top); //stack.top - j - 1printf("当前栈内元素有:%dt%s",element.id,element.name);}free(stack.base);}void main(){TestSeqStack();}#includeintmain(){inta[1001],b[1001];//a数组存放A方向顺序编号的1-n的车厢b数组存放特定顺序进入B方向铁轨的车厢编号intn,i,j,k;//n
8、表示车厢while(scanf("%d