前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【我的漫漫跨考路】数据结构之线性表

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

作者头像
用户1687088
发布2018-05-07 16:49:57
6460
发布2018-05-07 16:49:57
举报

正文之前

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

正文

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

运行结果:

代码语言:javascript
复制
5
 加油啊!
--------------
|     fuck    |
--------------
5
 加油啊!4
 加油啊!Program ended with exit code: 0

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

正文之后

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

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

另外,弱弱的求个关注,看官老爷们有话直接留言~我俩随时关注~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 工科狗和生物喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文之前
  • 正文
  • 正文之后
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档