typedef int ElemType;
typedef struct LNode //定义单链表结点类型
{
ElemType data;
struct LNode *next; //指向后继结点
} LNode, *LinkList;
3. 栈和队列
目标:
-
掌握栈和队列的基本存储结构
-
熟练掌握栈和队列的基本使用
-
熟悉栈和队列的一些典型应用
任务:
- 使用顺序存储结构来实现栈的基本操作(自行完成)。
- PTA函数题:另类堆栈、在一个数组中实现两个堆栈(考研题)
-
学会使用STL中的stack、queue与string见参考资料Stack与Queue代码。完成实验任务书中的题目1—C++中的stack和queue(课上必选)。
-
栈的应用(课上任选一)
-
根据PPT上的伪代码使用stack编写数制转换函数(十进制转二进制=>十进制转十六进制)。
-
void convertDecToBin(int x);//对十进制整数x输出其二进制值。需考虑0、负数,请写出测试代码)
-
PTA:符号配对(考核)、表达式转换(中缀转后缀,考核)
-
实验任务书:字符串是否对称(回文)
- 递归(自行完成,实验课考核加分)
4.1 递归程序编写(课上完成)
题目:已知f为单链表的表头指针, 链表中存储的都是整型数据,试写出实现下列运算的递归算法:
① 求链表中的最大整数;
② 求链表的结点个数;
③ 求链表中所有节点数据的平均值。**注意:**1.适用于包含头结点的链表;2.要考虑空链表、只包含1个节点的链表的情况。
4.2 使用stack将以下递归程序转化为非递归程序
void test(int &sum)
{
int x;
cin>>x;
if (x==0) sum = 0;
else {
test(sum);
sum+=x;
}
cout<<sum;
}
- 队列的应用(课上任选一)
-
PTA:银行业务队列简单模拟、舞伴问题
-
实验任务书:使用队列打印杨辉三角(可选)。
- 可选
-
实验任务书:使用队列对扑克牌排序、走迷宫。
-
PTA题目:另类循环队列(函数)
- 特别加分:使用递归或者队列实现对指定目录名及文件名进行文件查找(可使用C、C++、Python、Java实现)。并发一个简单博客描述该问题解决过程。
参考资料:
4