数据结构第二章总结

你对本章内容的小结
完成作业或实践时解决困难的经验分享
这段时间,你参考了哪些值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码)
目前学习过程中存在的困难,待解决或待改进的问题
上次博客确定的目标达到了吗?如果没达到,请分析原因
接下来的目标

 

首先总结一下学习的知识吧。

(一)初始化
           顺序表:为顺序表分配一个大小确定的数组空间,空表时长度为0;
           链表:构造一个空的单链表L,用头指针指向头结点,头结点的指针域置空(L = new LNode; L->next = NULL;)

(二)取值
           顺序表:先判断序号值是否合理,若合理,则e = L.elem[ i - 1 ] ;                   
           链表:用指针p指向首元结点,用j做计数器初值赋为1,从首元结点开始依次顺着链域next向下访问
                   p=L->next; j=1;
                   while(p&&j<i)
                   {  p=p->next; ++j; }
                   e = p->data;
             (三)查找(按值查找)
             顺序表:从第一个元素起,依次与待查找数比较,时间复杂度为O(n)
                         for( int i=0; i<n; i++ )
                              if( L.elem[i]==e)  return i+1;
             链表:用指针p指向首元结点,从首元结点开始依次顺着链域next向下访问,时间复杂度为O(n)
                        p=L->next;
                        while( p && p->data != e )    p=p->next;
             (四)插入(在第i个位置插入新的元素e)
              顺序表:将第n个至第i个位置依次向后移动一个位置,空出第i个位置,将元素e放入第i个位置,表长加1,时间复杂度为O(n)
                        for( int j=L.length - 1; j>=i -1; j-- )    L.elem[ j+1]=L.elem[ j ];
                        L.elem[ i -1 ]=e; 
                        ++L.length;
               链表:先查找到第i-1个结点,再将值为e的新结点插入到结点a(i-1)和a(i)之间,时间复杂度为O(n)
                        p = L; j = 0;
                       while( p && j<i-1 )  { p=p->next; ++j; }
                       s = new LNode; s->data=e; 
                       s->next = p->next; p->next = s;
               (五)删除
                顺序表:先判断位置i是否合理,若合理,则将被删除元素之后的元素前移,表长减1,时间复杂度为O(n)
                       for( j=i; j<=L.length-1; j++ )   L.elem[ j-1]=L.elem[ j ];
                       --L.length;
                 链表:先查找到第i-1个结点,临时保存被删除结点的地址以备释放,改变删除结点前驱结点的指针域,释放删除结点的指针域,时间复杂度为O(n)
                       while( p && j<i-1 )  { p=p->next; ++j; }
                       q=p-<next; p->next = q->next;

其次说一下我自己的感受吧。

其实说是真的,上个学期其他的知识我学的都挺好的,可是C++不会,学不懂。这学期也是,其他的知识我也都会,但是就是不会数据结构。这些知识点我也整理出来。可是我还是不会用,对此一窍不通。我原来就听说过,这学期的数据结构一定要好好学,这是以后的基础,一定会用得到的,而且也听说C++学不好,以后的JAVA也学不好,我觉得我与这个计算机无缘了。曾经立下的雄心壮志也无法实现了吧。中间想了很多,我以为只要我够努力就可以学得好,其实并不如我想象的那么简单,越不会越不会,因为感觉自己好丢人,别人都是深奥的问题,可是我却还停留在原地一动不动。想想自己好惨哦,哈哈哈。

我遇到的困难好多哦,看到我说的这些话都应该了解了吧,一开始别人说我学不明白是因为逻辑思维不好,可是我离散数学学的挺好的,就像我高中,别人说数学学得好物理就能好,可是我的物理并不是太好。我不知道该如何去做因为这本不是我真正的选择,我真的不知道自己还能坚持多久,希望好久之后回头看一下我的博客,能有所进步,有所改变吧。

完成作业时遇到不仅仅是困难了,已经算是灾难了吧,我提交的很晚,因为我真的做了好久,最后还去网上寻找了一点答案,真的是想不明白,而且不会写,就算自己明白怎么做,但是写起代码就不知道从何下手。实践提交了一遍又一遍都没过,真的很挫败,这些从来不像对别人说,但是一旦写在上面,肯定会有人看到的,我写在这里也是希望某一天回头看看能看到自己的成长。

那就这样吧,没有成功过的喜悦,只有遗憾的语气,希望我可以坚持的久一点,更希望可以找到自己的方法去完成它。

替我加油吧!

转载于:https://www.cnblogs.com/XJWQ/p/10549398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值