学习日志
姓名:崔宇 日期:2018.9.11
今日学习任务:
学习了栈和队列的内容,怎样定义一个结构体变量,学会自定义头文件的知识,理解栈的用法,编写进栈,出栈和读取栈顶元素和栈中元素的程序。
今日任务完成情况:
上课跟着老师的节奏把程序已经全部写完并编译运行成功。
线性结构存储:
1.顺序存储:(连续)
2.链式存储(不连续)
栈的属性:
长度 栈顶指针(数组下标)
容量
起始地址,初始化栈,进栈,出栈,判定栈是否为空,获取栈顶元素,清空栈。
例子:Int a[10];
Int top;
用结构体来编写
Struct stack
{
int data[10];
int top;
}
今日开发中出现的问题汇总:
栈的相关知识理解不够透彻,对于数组的进栈与出栈相关的程序编写仍有困难 。
今日开发收获:
复习了c语言栈的操作,并且来编写相关函数。
自我评价:
基本完成任务,打字速度需要提高,继续加油。
stack.h的头文件:
1 #infndef STACK_H
2 #define STACK_H
3
4 #define MAXSIZE 10
5 #define SUCCESS 1000
6 #define FAILURE 1001
7
8 struct stack
9 {
10 int data [MAXSIZE];//shuzu
11 int top;//zhandingzhizhen()shuzuxiabiao
12 };
13 typedef struck stack S
14 #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];
}