首页 > 其他 > 详细

数据结构第三章学习心得

时间:2020-04-25 12:21:54      阅读:40      评论:0      收藏:0      [点我收藏+]

第三章的开始学习了栈

栈有他的基本性质,又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈可以用来在函数调用的时候存储断点,做递归时要用到栈

const int MAXSIZE = 100;
typedef struct
{
    char data[MAXSIZE];
    int top; 
    int stackSize;
}SqStack;

void initStack(SqStack& s)
{
    s.top = 0;
    s.stackSize = MAXSIZE;
}//顺序栈

  在学习链表开始,我就将所有学习过的数据结构类型定义都保存了下来,方便复习和深入理解。

接下来学习了汉诺塔问题,以汉诺塔问题为媒介,学习了递归和迭代的思维。但在解决问题时,我们有学习找规律去解决汉诺塔问题而不是一味的递归(在数据较大时难以通过递归快速解决问题)。

接下来学习了队列。队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

typedef int QElemType;
typedef int Status;
typedef struct QNode
{
    QElemType data;     
    struct QNode* next;  
}QNode, * QueuePtr;

typedef struct
{
    QueuePtr front; 
    QueuePtr rear; 
}LinkQueue;

Status InitQueue(LinkQueue& Q)
{
    Q.front = Q.rear = new QNode;
    Q.front->next = NULL;  
    return 1;
}//队列

队列大部分内容都是自学,目前我对队列理解还不够深刻,运用起来也不算流畅。还需要继续练习。

到了小组作业的环节,我们组一开始在采用什么数据结构上考虑了很久。最后采用了链表,代码方面问题不大,主要是时间的减少,通过直接遍历的方法解决了。

作业和实践:作业一开始比较难以下手,看完了老师在mooc上的视频后写了出来然后复现了一遍,感觉有点恍然大悟。实践一设计了思路,但是感觉差临门一脚,就在网上查询资料的帮助下解决了。

目标:希望以后在课上的问答环节能够争取完成每一个问题,目前经常出现答错或者没有思路的问题。

 

数据结构第三章学习心得

原文:https://www.cnblogs.com/pjc1435211553/p/12772043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!