name:钱成杰 date:2018.9.11
今日学习任务
初步了解数据结构,栈中存放的是数组,进出的顺序是:先进后出
线性结构的存储方式:1.顺序储存(连续)2.链式储存(不连续)
分别编写的程序是(1).初始化栈(2).进栈(3).出栈(4).判断栈是否空
(5).存取栈顶元素 (6).空栈
今日任务完成情况
上课能跟上老师教学进度,完成程序的编写。在编程的过程中出现了一些符号的遗漏,总的完成还可以。
今日开发中出现的问题汇总
跟着老师学习编简单的程序,还是有一些程序出现问题,对于数组的存储也有了一些了解,学会了头文件的创建,文件的保存等,如:文件的保存命令ESC键->shift+; (:)->w+回车
所有文件的编译:gcc *c -o main
头文件的初始化:#include”ifndef stack_h”
#include”define stack_h”
#endif
头文件的第一句是为了防止同一个C文件中包含同一个头文件
预处理:处理#出现的代码
今日未解决问题
对于数组的进栈与出栈相关的程序编写仍有困难
今日开发收获
初步了解了数组的(1).初始化栈(2).进栈(3).出栈(4).判断栈是否空
(5).存取栈顶元素 (6).空栈等相关程序的编程
自我评价
课后需要多加巩固,再把相关的编程看看,写一写。
课堂训练:
Stack.h
include”ifndef stack_h”
include”define stack_h”
define MAXSIZE 10
define SUCCESS 1000
define FAILURE 1001
Struct stack
{
Int data[MAXSIZE];
Int top;
}
Typedef struct stack S
endif
}
Main.c
include “stdio.h
include “stack.h”
int main()
{
S stack;
int ret,i;
ret =InitStack(&stack);
if(SUCCESS == ret)
{
printf("Init Success!\n");
}
else
{
printf("Init Failure!\n");
}
for(i=0;i<5;i++)
{
ret = push(&stack,i+1);
if(SUCCESS == ret)
{
printf(“push %d success!\n”,i+1);
}
else
{ printf(“push failure!\n”);
}
}
for(i=0;i<3;i++)
{
ret =pop(&stack);
if(ret==FAILURE)
{printf(“pop failure!\n”);
}
else
{printf(“pop %d success!\n”,ret);
}
}
ret =Emptystack(stack);
if(ret==SUCESS)
{printf("stack is empty!\n");
}
else
{
printf("stack is empty!\n");
}
ret =GetTop(stack);
if(ret == FAILURE)
{
printf("Get Top Failure!\n");
}
else
{
printf("Top %d\n",ret);
}
return 0;
}
Stack.c
include”stack.h”
include”stdlib.h”
int InitStack(S *s)
{
if(NULL== s)
{
return FAILURE;
}
s->top = -1;
return SUCCESS;
}
int push(S *s,int e)
{if(NULL==s)
{return FAILURE;
}
if(s->top==MAXSIZE-1);
{return FAILURE;
}
s->data[s->top+1]=e;
s->top++;
return SUCCESS;
}
int pop(S *s)
{
if(NULL==0)
return FAILURE;
}
if(-1==s->top)
{return FAILURE;
}
int e=s->data[s->top];
{ s->top- -;
return 0;
}
int EmptyStack(S ,s)
{
return(s,top== -1)?SUCCESS :FAILURE;
}
int Get Top(S,s)
{
if(s,top==-1);
return FAILURE;
}
return s,data[s,top];
}