栈和队列
实验目的:
(1)掌握栈和队列的数据结构的特点。
(2)熟练掌握在两种存储结构上实现栈和队列的基本运算。
(3)学会利用栈和队列解决一些实际问题。
(4)掌握和理解本实验中出现的一些基本的C语言语句。
(5)体会算法在程序设计中的重要性。
实验内容:
(1)写一算法将一顺序栈中的元素依次取出,并打印元素值。
(2)写一算法将一链栈中的元素依次取出,并打印元素值。
(3)写一算法将一顺序队列中的元素依次取出,并打印元素值。
(4)写一算法将一链队列中的元素依次取出,并打印元素值。
单链表
实验目的:
(1)熟练掌握线性表的单链式存储结构及在其上实现线性表的各种基本运算的方法。
(2)掌握和理解本实验中出现的一些基本的C语言语句。
(3)体会算法在程序设计中的重要性。
实验内容:
(1)设计一算法,逆置带头结点的动态单链表head。要求利用原表的结点空间,并要求用尽可能少的时间完成。
(2)设有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C(值相同的元素均保留在C表中),并要求利用原表的空间存放C。
对线性表采用折半查找法,该线性表必须()。
A.采用顺序存储结构
B.采用链式存储结构
C.采用顺序存储结构,且元素按值有序
D.采用链式存储结构,且元素按值有序
算法实现的思路为:在有序单链表中插入一个数据元素x,首先要找到该元素应该插入到什么位置,才能保证插入后的单链表仍为有序表。因此,算法的第一步是寻找x的位置:设置指针p、q,最初p指向头结点,q指向头结点的下一个结点,比较q所指数据域的值与x的大小,如果小于x,则p、q分别向后移动一个位置,使p始终作为q的前驱结点,然后重复上面的比较过程;如果比较结果大于x或是比较到最后单链表结束了,则找到了插入位置,在p与q之间插入结点x即可。算法的具体实现如下:
(1)该带状矩阵中有多少个非零元素?
(2)若用一个一维数组B按行顺序存放各行的非零元素,且设a[]存放在B[0]中,请给出一个公式,计算任一非零元素a,在一维数组B中的存放位置。