sp | PAI | Department of Informatics | Faculty of Science | University of Fribourg | Switzerland Series 9. ADT – SR Approach (visit 1) nd System-oriented Programming, BSc Course, 2 Sem., Prof. B. Hirsbrunner, A. Halabi and Ch. Göttel Handout on Tue, 21 April 2015 Due on Mo, 27 April, 12:00 Reading. Study the lecture notes and the tutorial 'ADT Object' (p. 1 - 4) very carefully, in conjunction with the source codes of ADT_Obj/STACK_Light/SR available at http://diuf.unifr.ch/pai/sp > Labs > adt > ADT_Obj.zip. You should spend at least 2 hours for this reading. Note that you already studied, in a simplified version, all these source codes in Series 4 to 7. You will find them again in ADT_Obj/STACK_Light/SR_Basic. Please note down any questions and comments you have and put them on the course forum or bring them to class. All exercises of this Series are done in the spirit of the SR approach. 1. traverse() – sum of all keys Extend STACK_Light/SR/STACK_Test.c with a function void sum(buf_t *buf) allowing to calculate the sum of the keys of the elements stored in the stack object. Implement and test it. Hint: a good understanding of buf_t, defined in STACK_Light/MTE/type_f.h, is necessary. If you are lost, study the already available functions: display(buf_t *), occurrence(buf_t *), size(buf_t *). 2. traverse() – what ever your imagination inspires you Propose another function f for 'stack_traverse(f,&buf)'. Then implement and test it. 3. Token List: data structure and pointer manipulation In graph theory, a token list is a list where the access, manipulator and traverse operations are done ahead or behind a token. Graphically it is represented as in Fig. 3.1. In computer science, a token list is usually implemented with a doubly linked list, supplied with a token, cf. Fig. 3.2. A text editor is a classical example of a token list, where the token is the cursor ! a. Define a data type tl_node_t and token_t describing this token doubly linked list, where each tl_node contains also an element of type elt_t. b. Implement the following functions in the spirit of the SR approach: 1. void tlist_move_token_backward() 2. void tlist_put_elt_behind_token(elt_t *e) A test on machine is out of scope of this Series of exercises. But your code should be compilable with 'gcc –c'. Figure 3.1. Graphical representation of a token list with resp. 0 and 4 vertices succ pred token behind token ahead Figure 3.2. A possible data structure for the token lists of Fig. 3.1
© Copyright 2024