四、设计题(本大题共2小题,共14分) 34.设某头指针为head的单链表的结点结构说明如下:(6分) typedef struct node1 { int data; struct node1*next }node; 试设计一个算法void change (node*head),将该单链表中的元素按原单链表相反的次序重新存放,即第一个结点变成最后一个结点,第二个结点变为倒数第二个结点,如此等等。 35.编写一个算法 void DisplayQueue (),产生50个300~600之间的随机整数(调用一次MyRand()可产生一个符合条件的随机整数)。每产生一个数据,若是奇数,则入队列,若是偶数,则从队首取出一个数据。要求:(8分) (1)队列用链表实现; (2)每产生一个数显示一次相应操作后的队列当前状态; (3)无需定义函数int MyRand(); (4)显示队列可调用函数 void DisOne (QueptrTp lq),也无需定义; (5)设链队列定义为: typedef struct linked_queue {int data; struct linked_queue*next; }LqueueTp; typedef struct queueptr { LqueueTp *front, *rear; }QueptrTp; QueptrTp lq; |