正文之前
昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天花了个把小时实现了线性存储-线性表的实现(我知道还有太多可以优化的地方,但是目前考研只要结果,不看优化,后面要的话我会在复试的准备中学习~~~这算不算立个过初试的Flag?)跪求看完的大神在下面给我贴出优化代码我来学习学习!!
废话不多说,有疑问的,有意见的,咱们评论区见:
正文
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5
//注:定义结构体及其指针
typedef struct List
{
int Data[MAXSIZE];
int Last;
} List, *PtrL;
//注:初始化线性表函数,传入一个表头,之后申请内存,使之成为静态变量
PtrL InitList(PtrL ptrl)
{
List *ptrL;
//注:不知道是MAXSIZE 还是不要,不过乘上总归是没错的!
ptrL=(List *)malloc(MAXSIZE*sizeof(List));
//注:初始尾指针指向-1,第一次复制就有了Data[0]=Data[Last],方便复用
ptrL->Last=-1;
//注:讲初始化后的线性表传回
return ptrL;
}
//注:插入数值函数,先预判需要插入的地方是否合法
void Insert(PtrL ptrL,int location,int item)
{
if ( ptrL->Last == MAXSIZE-1 )
{ /* 表空间已满,不能插入*/
printf("表空间已满,不能插入");
return;
}
if ( location< 0 || location > ptrL->Last+2)
{
/*检查插入位置的合法性*/
printf("位置不合法");
}
//注:在插入位置之后的所有元素统统向后移位,到了location位置之后,传入给定值
int i=ptrL->Last;
for (i=ptrL->Last; i >= location; --i)
{
ptrL->Data[i+1]=ptrL->Data[i];
}
ptrL->Data[location]=item;
//注:尾指针要加一,确保一直指向最后的一个数值
ptrL->Last+=1;
}
//注:遍历函数,简单易懂,只是一开始忘了尾指针在第一个数值传入的时候等于0,后来想起来了。
void ShowList(PtrL ptrl)
{
for (int i = 0; i < ptrl->Last+1; i++)
{
printf("%d\n 加油啊!💪\n",ptrl->Data[i]);
}
}
int main()
{
PtrL ptrl;
ptrl=InitList(ptrl);
Insert(ptrl,0,5);
ShowList(ptrl);
Insert(ptrl,1,4);
printf("\n--------------\n| \tfuck \t|\n--------------\n" );
ShowList(ptrl);
return 0;
}
我一开始执着于在初始化的过程中直接将整个表给一定程度的赋值,但是后来因为Fill()函数老是给我出岔子,然后我就把他删了,从而用Insert()函数代替。中途又出了通过比较尾指针遍历的时候,因为尾指针从-1开始无法遍历的情况,然后我机智的在比较的时候给为指针的数值加1再进行比较。好吧,我承认是因为我写的不熟练,所以在写的过程中遗漏了这些,以后会慢慢变好的。诚挚邀请大家来见证我的成长!
运行结果:
5
加油啊!
--------------
| fuck |
--------------
5
加油啊!4
加油啊!Program ended with exit code: 0
那个Fu*k是因为当时老是出Bug,打了断点但是还没有找出来错误在哪,所以给予这个程序深深地草泥马之冲击~~
正文之后
我决定了,初始写码用sublime,而且神奇的发现很多C的基本语法没有自动补全,这岂不是上天助我?考研的时候那破机器,报错都成问题,自动补全做美梦呢?可以锻炼我的严谨程度,防止习惯了自动补全,自动纠错之后再来写代码就是破破烂烂的那种情况了。不过Xcode的纠错能力很强啊。而且sublime没有单步运行能力,但是Xcode作为苹果当家开发工具,妥妥的!
再多说两句,考研可真不是一个简单的事情,这是比高考更加让人绝望的东西。因为高考之前你全心全意都只能为高考而准备,然而在考研之前有太多太多的东西会来阻挠你。不仅仅是因为没有人监督,没有人共同作战,而且也是因为难度骤增,这些东西你可能已经忘了两三年了(更有甚者几乎等于没学过),再捡起来的时候,就没有当初那么充足的时间来让你慢吞吞的学了。而且连考四门并且每门基本上没有任何关联。光是安排就会让你手足无措。昨天下午的时候,我整个人都萎靡不振,对于微积分的那些东西,也是半天想不出来,只能看答案,我都有点怀疑人生了。但是幸亏,我的阿q精神,还是帮助了我,在网上看了两集[信号]之后,今天又重新开始面对一切。待会儿下午和晚上想把第四章看完,不知道能不能做到!加油吧总之!!