【我的漫漫考研路】数据结构之线性表

正文之前

【我的漫漫考研路】数据结构之线性表_第1张图片

昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天花了个把小时实现了线性存储-线性表的实现(我知道还有太多可以优化的地方,但是目前考研只要结果,不看优化,后面要的话我会在复试的准备中学习~~~这算不算立个过初试的Flag?)跪求看完的大神在下面给我贴出优化代码我来学习学习!!
废话不多说,有疑问的,有意见的,咱们评论区见:

正文

#include 
#include 
#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再进行比较。好吧,我承认是因为我写的不熟练,所以在写的过程中遗漏了这些,以后会慢慢变好的。诚挚邀请大家来见证我的成长!

运行结果:

【我的漫漫考研路】数据结构之线性表_第2张图片
5
 加油啊!
--------------
|   fuck    |
--------------
5
 加油啊!4
 加油啊!Program ended with exit code: 0

那个Fu*k是因为当时老是出Bug,打了断点但是还没有找出来错误在哪,所以给予这个程序深深地草泥马之冲击~~

正文之后

我决定了,初始写码用sublime,而且神奇的发现很多C的基本语法没有自动补全,这岂不是上天助我?考研的时候那破机器,报错都成问题,自动补全做美梦呢?可以锻炼我的严谨程度,防止习惯了自动补全,自动纠错之后再来写代码就是破破烂烂的那种情况了。不过Xcode的纠错能力很强啊。而且sublime没有单步运行能力,但是Xcode作为苹果当家开发工具,妥妥的!

【我的漫漫考研路】数据结构之线性表_第3张图片
【我的漫漫考研路】数据结构之线性表_第4张图片

再多说两句,考研可真不是一个简单的事情,这是比高考更加让人绝望的东西。因为高考之前你全心全意都只能为高考而准备,然而在考研之前有太多太多的东西会来阻挠你。不仅仅是因为没有人监督,没有人共同作战,而且也是因为难度骤增,这些东西你可能已经忘了两三年了(更有甚者几乎等于没学过),再捡起来的时候,就没有当初那么充足的时间来让你慢吞吞的学了。而且连考四门并且每门基本上没有任何关联。光是安排就会让你手足无措。昨天下午的时候,我整个人都萎靡不振,对于微积分的那些东西,也是半天想不出来,只能看答案,我都有点怀疑人生了。但是幸亏,我的阿q精神,还是帮助了我,在网上看了两集[信号]之后,今天又重新开始面对一切。待会儿下午和晚上想把第四章看完,不知道能不能做到!加油吧总之!!

你可能感兴趣的:(【我的漫漫考研路】数据结构之线性表)