第二讲 线性结构

2.1 线性表及其实现

45分钟的课时,大概学习了90分钟。

1.多项式的线性表表示
方法一:顺序存储结构,数组直接表示


二:顺序存储结构,数组只表示非零项


三:链式存储结构,链表表示


===========================================================================================================================
后面讲的线性表的抽象数据类型,不记了。
===========================================================================================================================
查找链表元素算法的复杂度:
最走运:1;最倒霉:n
平均复杂度:(n+1)/2
O(n)
2.广义表及其中的union应用。
矩阵的多重链表表示,我操,好难


2.2 堆栈

15:48-17:12>>84min ,40min课时。记录用了20min





1.堆栈顺序存储的另一种实现?



有人给出了堆栈用数组实现的另一种方式,即直接在函数参数中传递数组和top变量(而不是两者组成的结构指针),其中Push操作函数设计如下。这个Push函数正确吗?为什么?

  1. #define MaxSize 100
  2. ElementType S[MaxSize];
  3. int top;
  4. void Push(ElementType *S, int top, ElementType item)
  5. {   if (top==MaxSize-1) {
  6.           printf(“堆栈满”);  return;
  7.     }else {
  8.           S[++top] = item;
  9.          return;
  10.     }
  11. }
答:错误。错在修改的top是函数内的形参。
2. 若用单向链表实现一个堆栈,当前链表状态为: 1->2->3 。当对该堆栈执行 pop() push(4) 操作后,链表状态变成怎样?

         14->2->3   (2) 1->2->4


答:(1).用链表实现的栈叫链栈,只能在栈顶(头结点后)执行插入和删除操作。

3.用一个数组实现两个堆栈。



/***///*******
用栈实现简单计算器如果觉得难,可以先实现将中缀表达式转换成后缀表达式。
****///***/

2.3 队列及其实现

21:55-23:36>>上网走神
23:40-0:12
都是队列的实现就不记了。
队列的链表实现是表头front,表尾rear.
但是这个用数组实现循环队列中运用了取余法 ,记一下:


原以为一天能学两讲,今天一讲没学完!作业没做
先努力一天学完一讲吧。

2.4应用实例 多项式加法运算

 coef:coefficient 系数;expon:exponential 指数;polynomial 多项式(可数名词);

需要注意的是,这个时候传入的*prear是指向指针的指针*prear=&rear;
想要在被调函数中修改主调函数的变量(非全局变量)就必须使用指针或引用。
/**顺便提一句,全局变量会默认初始化“0”,局部变量不会,需要自己初始化,不然会乱码。*/

多项式乘法和加法

本来打算当天学完的,但实际我再次学习这一节已经是三天以后了,在坚持的决心下,强度还是要一点点提。
为什么要一点点提?不能用意志克服吗?
答:我本人天生就不是一个意志坚强的人,我也不知道能让自己意志坚强的训练方法。我只是自己一个人,没人督促我,我也不常能看到自己的竞争对手,感受到竞争压力,能促使着引诱着我前进的将会是兴趣(愿意付出努力来换取回报)由此看来,我根本做不到日复一日的高强度训练,保证自己每天都在学,养成习惯远比间歇性的简短的高压突击学习重要。不得不承认,我不是那种能在短时间内突击到高水平的人才。另外,由易到难,循序渐进也是绝大多数成功者都在强调的一点。

卑微地努力着,相信未来会有更美好的事情发生。

1.多项式的表示

2.如何使代码逻辑清晰,在已有解决问题的大体思路时,可不断的拆分问题,构建程序框架,在程序的框架中填代码。必要的变量和指针可在演草纸上记录,模拟赋值过程。
建立链表的时候插入头节点,编程更容易。

2.调整输出格式用的flag,使第一项的输出格式与其他项不同。





  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值