【我的漫漫考研路】数据结构之堆栈的线性实现
正文之前
昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天花了个把小时实现了线性存储-线性表的实现(我知道还有太多可以优化的地方,但是目前考研只要结果,不看优化,后面要的话我会在复试的准备中学习~~~这算不算立个过初试的Flag?)跪求看完的大神在下面给我贴出优化代码我来学习学习!!
废话不多说,有疑问的,有意见的,咱们评论区见:
正文
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 8
//注:定义堆栈
typedef struct Stack
{
int Data[MAXSIZE];
int Top;
} Stack,*PtrS;
PtrS InitList()
{
PtrS ptrs;
//注:不知道是MAXSIZE 还是不要,不过乘上总归是没错的!
ptrs=(PtrS)malloc(sizeof(Stack));
//注:初始栈顶指针指向0,第一次复制就有了Data[0]=Data[Last],方便复用
ptrs->Top=-1;
//注:讲初始化后的堆栈传回
return ptrs;
}
void Push(PtrS ptrs,int data)
{
if (ptrs->Top==MAXSIZE-1)
{
printf("Full Full!!\n" );
}
else
{
ptrs->Data[++(ptrs->Top)]=data;
}
}
int Pop(PtrS ptrs)
{
if (ptrs->Top==-1)
{
printf("Empty Empty!!\n" );
printf("Go Away 我被掏空啦!\n");
return 0;
}
else
{
ptrs->Top--;
return ptrs->Data[(ptrs->Top+1)];
}
}
void ShowStack(PtrS ptrs)
{
int i,num;
for (i=ptrs->Top; i >= 0; --i)
{
num=Pop(ptrs);
printf("%d is poped\n",num);
}
}
int main()
{
PtrS ptrs;
ptrs=InitList();
Push(ptrs,5);
Push(ptrs,4);
Push(ptrs,3);
Push(ptrs,2);
Push(ptrs,1);
printf("\n--------------\n| \tfuck \t|\n--------------\n" );
ShowStack(ptrs);
}
一鼓作气,承受着我老妈吃饭时候的怒吼连连,我也把堆栈的线性实现写出来了。果然越到后面越6啊。信手捏来!~~今天下午就不写码了。老老实实看数学,不过在此之前还是要睡一会的。在家最大的优点就是:睡眠质量杠杠滴!!虽然老妈比较烦,又想拽着我去走人家。才不去!!!
运行结果:
--------------
| fuck |
--------------
1 is poped
2 is poped
3 is poped
4 is poped
5 is poped
Program ended with exit code: 0
正文之后
我决定了,初始写码用sublime,而且神奇的发现很多C的基本语法没有自动补全,这岂不是上天助我?考研的时候那破机器,报错都成问题,自动补全做美梦呢?可以锻炼我的严谨程度,防止习惯了自动补全,自动纠错之后再来写代码就是破破烂烂的那种情况了。不过Xcode的纠错能力很强啊。而且sublime没有单步运行能力,但是Xcode作为苹果当家开发工具,妥妥的!
(为了凑字数)再多说两句(上一篇讲过的~~),考研可真不是一个简单的事情,这是比高考更加让人绝望的东西。因为高考之前你全心全意都只能为高考而准备,然而在考研之前有太多太多的东西会来阻挠你。不仅仅是因为没有人监督,没有人共同作战,而且也是因为难度骤增,这些东西你可能已经忘了两三年了(更有甚者几乎等于没学过),再捡起来的时候,就没有当初那么充足的时间来让你慢吞吞的学了。而且连考四门并且每门基本上没有任何关联。光是安排就会让你手足无措。昨天下午的时候,我整个人都萎靡不振,对于微积分的那些东西,也是半天想不出来,只能看答案,我都有点怀疑人生了。但是幸亏,我的阿q精神,还是帮助了我,在网上看了两集[信号]之后,今天又重新开始面对一切。待会儿下午和晚上想把第四章看完,不知道能不能做到!加油吧总之!!
下午刚死数学全书第四章--向量空间!!!