Week 1: Introduction

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [0/79]


❖ COMP9024 24T2

Data Structures and Algorithms

[Diagram:Pic/COMP9024.png]

Changwei Zou


Web Site:   COMP9024 24T2

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [1/79]


❖ This term, your Teaching Team consists of ...

Lecturer in Charge:Changwei Zou
Office:K17-501E
Consults:non-technical/personal issue - by appointments ...
technical/course contents - Use CSE Help, or Course Forum

Course admin:Mingqin Yu
A team of tutors:... who are they?
Email address to use:cs9024@cse.unsw.edu.au

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [2/79]


❖ This term, your Teaching Team consists of ... (cont)

Tutors:Deniz Dilsiz
Ziming Gong
Janhavi Jain
Joffrey Ji
Leman Kirme
Ziting Li
Kisaru Liyanage
Thirasara Beruwawela Pathiranage
Adiyat Rahman
Fritz Rehde
Finn Xu
Oliver Xu
Sijia Xu
Nimish Ukey
Mingqin Yu

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [3/79]


❖ Schedule (topics are not absolutely fixed ...)

WeekLecturesWeekly Prac/QuizWeekly TutAssignment
1Introduction, C language -- Large Assignment
2Dynamic data structures prac/quiz Tutorial|
3Analysis of algorithms prac/quiz Tutorial|
4Graph data structures prac/quiz Tutorial|
5Graph algorithms prac/quiz Tutorial|
6Mid-term test (online) (Thursday, 6pm-7pm) --|
7Search tree data structuresprac/quiz Tutorial|
8Search tree algorithms prac/quiz Tutorial|
9String algorithmsprac/quiz Tutorial|
10Randomised algorithms, Review prac/quiz Tutorial| due
Exam Week (Central)Final Exam (on campus) --

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [4/79]


❖ Assessment Summary

weekly_lab   = mark for weekly practicals/quizzes (out of 2*8) 
mid_term     = mark for mid-term test    (out of 12)
large_assn   = mark for large assignment (out of 12)
exam         = mark for final exam       (out of 60)


total = weekly_lab + mid_term + large_assn + exam

To pass the course, you must achieve:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [5/79]


❖ Weekly Practical Exercises and Quizzes

In weeks 2-5, 7-10 :

Practical exercises are provided at the bottom of tutorial web pages (e.g., Tutorial in Week 2).

After completing each weekly practical exercise, please proceed to the weekly quiz on Moodle.

Weekly Quizzes (practical exercises) contribute 16% to overall mark ( 2 marks each x 8 weeks).

Do them yourself!   and   Don't fall behind!

Quizzes on Moodle

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [6/79]


❖ Large Assignment

The large assignment gives you experience applying tools/techniques
(but to a larger programming problem than weekly practical exercises)

The assignment will be carried out individually.

The assignment will be released late Week 1 and is due in week 10.

The assignment contributes 12% to overall mark.

Large Assignment on Github

Submit your answers in week 10 on Moodle

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [7/79]


❖ Mid-term Test

1-hour online test in Week 6 (Thursday, 6-7pm).

Format:

The mid-term test contributes 12% to overall mark.
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [8/79]


❖ Final Exam

2-hour written exam during the exam period.

Format:

The final exam contributes 60% to overall mark.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [9/79]


❖ Complete weekly quizzes and the large assignment on time

Answers to the quizzes and the large assignment (assessed online via Moodle) will be released to students on completion.

For some assessment items, a late penalty may not be appropriate.

Such assessments will receive a mark of zero if not completed by the specified date. Examples include:

For more details, see COMP9024 Course Outline.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [10/79]


Start with reading, debugging and modifying a runnable program in COMP9024 on GitHub.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [11/79]


❖ Course Goals

COMP9021 …

COMP9024 … Data structures Algorithms
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [12/79]


❖ Pre-conditions

There are no prerequisites for this course.

However we will move at fast pace through the necessary programming fundamentals. You may find it helpful if you are able to:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [13/79]


❖ Post-conditions

At the end of this course you should be able to:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [14/79]


❖ Access to Course Material

Ideas for the COMP9024 material are drawn from

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [15/79]


❖ Resources

Textbook

[Diagram:Pic/AlgsP1-5.jpg]

Good books, useful beyond COMP9024 (but coding style …)

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [16/79]


❖ Resources (cont)

Supplementary textbook:

[Diagram:Pic/moffat.jpg]

Also, numerous online C resources are available.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [17/79]


❖ Lectures

Lectures will:

Lectures provide an alternative view to textbook

Lecture documents (e.g., programs, notes or slides) will be made available before lecture each week

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [18/79]


❖ Weekly Tutorials

The weekly tutorials/classes, with tutors, aims to:

You may bring your own laptop to access materials or take notes

Important - tutorials provide an opportunity for a more intimate classroom experience where you can interact more closely with the tutors and other students.

Tutorials on Github
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [19/79]


❖ Plagiarism

[Diagram:Pic/plagiarism.jpg]

Just Don't Do it

We get very annoyed by people who plagiarise.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [20/79]


❖ Plagiarism (cont)

Examples of Plagiarism (student.unsw.edu.au/plagiarism):

  1. Copying

    Using same or similar idea without acknowledging the source
    This includes copying ideas from a website, internet

  2. Collusion

    Presenting work as independent when produced in collusion with others
    This includes students providing their work to another student

    • which includes using any form of publicly readable code repository

Your submissions will be checked for and will be reported to the Academic Integrity Unit at UNSW.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [21/79]


❖ Summary

The goal is for you to become a better programmer

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [22/79]


❖ C Programming Language

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [23/79]


❖ Why C?

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [24/79]


❖ Brief History of C

C and UNIX operating system share a complex history …

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [25/79]


❖ Basic Structure of a C Program

// include files
// global definitions

// function definitions
function_type f(arguments) {

   // local variables

   // body of function

  return …;
}

.
.

                                       

.
.
.
.
.

// main function
int main(arguments) {

   // local variables

   // body of main function

   return 0;
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [26/79]


❖ Exercise: What does this program compute?

#include <stdio.h>

int f(int m, int n) {

   while (m != n) {
      if (m > n) {
	 m = m-n;
      } else {
	 n = n-m;
      }
   }
   return m;
}

int main(void) {

   printf("%d\n", f(30,18));
   return 0;
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [27/79]


❖ Example: Insertion Sort in C

Insertion Sort algorithm (in Pseudo Code):

insertionSort(A):
|  Input array A[0..n-1] of n elements
|
|  for all i=1..n-1 do
|  |  element=A[i], j=i-1
|  |  while j≥0 and A[j]>element do
|  |     A[j+1]=A[j]
|  |     j=j-1
|  |  end while
|  |  A[j+1]=element
|  end for

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [28/79]


❖ Example: Insertion Sort in C (cont)


#include <stdio.h> // include standard I/O library defs and functions

#define SIZE 6     // define a symbolic constant

void insertionSort(int array[], int n) {  // function headers must provide types
   int i;                                 // each variable must have a type
   for (i = 1; i < n; i++) {              // for-loop syntax
      int element = array[i];                                                    
      int j = i-1;
      while (j >= 0 && array[j] > element) {  // logical AND
         array[j+1] = array[j];
         j--;                                 // abbreviated assignment j=j-1 
      }
      array[j+1] = element;                   // statements terminated by ;
   }                                          // code blocks enclosed in { } 
}

int main(void) {                              // main: program starts here
   int numbers[SIZE] = { 3, 6, 5, 2, 4, 1 };  /* array declaration
                                                 and initialisation */
   int i;
   insertionSort(numbers, SIZE);
   for (i = 0; i < SIZE; i++)
      printf("%d\n", numbers[i]);             // printf defined in <stdio>

   return 0;           // return program status (here: no error) to environment
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [29/79]


❖ Compiling with gcc

C source code:   prog.c
a.out   (executable program)

To compile a program prog.c, you type the following:

gcc prog.c

To run the program, type:

./a.out

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [30/79]


❖ Compiling with gcc (cont)

Command line options:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [31/79]


❖ Sidetrack: Printing Variable Values with printf()

Formatted output written to standard output (e.g. screen)

int printf(const char *formatString, ...);

formatString can use the following placeholders:

%d  decimal       %f  floating-point
%c  character       %s  string
\n  new line       \"  quotation mark

Examples:

int num = 3;
printf("The cube of %d is %d.\n", num, num*num*num);

The cube of 3 is 27.

char ch  = 'z';
int num = 1234567;
printf("Your \"login ID\" will be in the form of %c%d.\n", ch, num);

Your "login ID" will be in the form of z1234567.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [32/79]


❖ Algorithms in C

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [33/79]


❖ Basic Elements

Algorithms are built using

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [34/79]


❖ Assignments

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [35/79]


❖ Assignments (cont)

C assignment statements are really expressions

Frequently, assignment is used in loop continuation tests Example: The pattern

v = getNextItem();
while (v != 0) {
   process(v);
   v = getNextItem();
}

is often written as

while ((v = getNextItem()) != 0) {
   process(v);
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [36/79]


❖ Exercise: What are the final values of a and b?

  1. 
    a = 1; b = 5;
    while (a < b) {
       a++;
       b--;
    }
    

  2. 
    a = 1; b = 5;
    while ((a += 2) < b) {
       b--;
    }
    

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [37/79]


  1. a == 3, b == 3
  2. a == 5, b == 4
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [38/79]


❖ Conditionals

if (expression) {
   some statements;
}

if (expression) {
   some statements1;
} else {
   some statements2;
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [39/79]


❖ Conditionals (cont)

Indentation is very important in promoting the readability of the code

Each logical block of code is indented:

// Style 1    
if (x)
{
   statements;
}

           

// Style 2 (my preference)
if (x) {
   statements;
}

           

// Preferred else-if style
if (expression1) {
   statements1;
} else if (exp2) {
   statements2;
} else if (exp3) {
   statements3;
} else {
   statements4;
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [40/79]


❖ Conditionals (cont)

Relational and logical operators

a > ba greater than b
a >= ba greater than or equal b
a < ba less than b
a <= ba less than or equal b
a == ba equal to b
a != ba not equal to b
a && ba logical and b
a || ba logical or b
! alogical not a

A relational or logical expression evaluates to 1 if true, and to 0 if false

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [41/79]


❖ Loops

C has two different "while loop" constructs

// while loop         
while (expression) {
    some statements; 
}

               

// do .. while loop
do {
   some statements;   
} while (expression);

The  do .. while  loop ensures the statements will be executed at least once

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [42/79]


❖ Loops (cont)

The "for loop" in C

for (expr1; expr2; expr3) {
   some statements;
}

 
Example:    

for (i = 1; i < 10; i++) {
   printf("%d %d\n", i, i * i);
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [43/79]


❖ Exercise: What is the output of this program?

int i, j;
for (i = 8; i > 1; i /= 2) {
    for (j = i; j >= 1; j--) {
        printf("%d%d\n", i, j);
    }
    printf("\n");
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [44/79]


88
87
..
81

44
..
41

22
21


COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [45/79]


❖ Functions

Functions have the form

return-type function-name(parameters) {

    declarations

    statements

    return …;
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [46/79]


❖ Functions (cont)

When a function is called:

  1. memory is allocated for its parameters and local variables
  2. the parameter expressions in the calling function are evaluated
  3. C uses "call-by-value" parameter passing …
    • the function works only on its own local copies of the parameters, not the ones in the calling function
  4. local variables need to be assigned before they are used   (otherwise they will have "garbage" values)
  5. function code is executed, until the first return statement is reached
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [47/79]


❖ Functions (cont)

When a return statement is executed, the function terminates:

return expression;

  1. the returned expression will be evaluated
  2. all local variables and parameters will be thrown away when the function terminates
  3. the calling function is free to use the returned value, or to ignore it
Example:


// Euclid's GCD (the Greatest Common Divisor) algorithm (recursive version)
int euclid_gcd(int m, int n) {
    if (n == 0) {
        return m;
    } else {
        return euclid_gcd(n, m % n);
    }
}

The return statement can also be used to terminate a function of return-type void:

return;

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [48/79]


❖ Data Structures in C

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [49/79]


❖ Basic Data Types

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [50/79]


❖ Aggregate Data Types

Families of aggregate data types:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [51/79]


❖ Arrays

An array is

Examples:

int  a[20];    // array of 20 integer values/variables
char b[10];    // array of 10 character values/variables

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [52/79]


❖ Arrays (cont)

Larger example:

#define MAX 20

int i;           // integer value used as index
int fact[MAX];   // array of 20 integer values

fact[0] = 1;
for (i = 1; i < MAX; i++) {
    fact[i] = i * fact[i-1];
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [53/79]


❖ Sidetrack: C Style

We can define a symbolic constant at the top of the file

#define SPEED_OF_LIGHT 299792458.0
#define ERROR_MESSAGE "Out of memory.\n"

Symbolic constants make the code easier to understand and maintain

#define NAME replacement_text

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [54/79]


❖ Sidetrack: C Style (cont)

UNSW Computing provides a style guide for C programs:

C Coding Style Guide    (http://wiki.cse.unsw.edu.au/info/CoreCourses/StyleGuide)


Not strictly mandatory for COMP9024, but very useful guideline

Style considerations that do matter for your COMP9024 assignments:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [55/79]


❖ Strings

"String" is a special word for an array of characters

Example:

If a character array s[11] contains the string "hello", this is how it would look in memory:

  0   1   2   3   4   5   6   7   8   9   10
---------------------------------------------
| h | e | l | l | o | \0|   |   |   |   |   |
---------------------------------------------

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [56/79]


❖ Array Initialisation

Arrays can be initialised by code, or you can specify an initial set of values in declaration.

Examples:

char s[6]   = {'h', 'e', 'l', 'l', 'o', '\0'};

char t[6]   = "hello";

int arr[5]   = {5, 4, 3, 2, 1};

int vec[]   = {5, 4, 3, 2, 1};

In the last case, C infers the array length   (as if we declared vec[5]).

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [57/79]


❖ Sidetrack: Reading Variable Values with scanf() and atoi()

Formatted input read from standard input (e.g. keyboard)

scanf(format-string, expr1, expr2, …);

Converting string into integer

int value = atoi(string);

Example:


#include <stdio.h>   // includes definition of BUFSIZ (usually =512) and scanf()
#include <stdlib.h>  // includes definition of atoi()

...

char str[BUFSIZ];
int n;

printf("Enter a string: ");
scanf("%s", str);
n = atoi(str);
printf("You entered: \"%s\". This converts to integer %d.\n", str, n);


Enter a string: 9024
You entered: "9024". This converts to integer 9024.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [58/79]


❖ Arrays and Functions

When an array is passed as a parameter to a function

Example:

int total, vec[20];
…
total = sum(vec);

Within the function …

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [59/79]


❖ Arrays and Functions (cont)

Since functions do not know how large an array is:

So, the previous example would be more likely done as:

int total, vec[20];
…
total = sum(vec,20);

Also, since the function doesn't know the array size, it can't check whether we've written an invalid subscript (e.g. in the above example 100 or 20).

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [60/79]


❖ Exercise: Arrays and Functions

Implement a function that sums up all elements in an array.

Use the prototype

int sum(int[], int)

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [61/79]


int sum(int vec[], int dim) {
   int i, total = 0;

   for (i = 0; i < dim; i++) {
      total += vec[i];
   }
   return total;
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [62/79]


❖ Multi-dimensional Arrays

Examples:

[Diagram:Pic/matrices.png]


Note:   q[0][1]==2.7    r[1][3]==8

Multi-dimensional arrays can also be initialised (must provide # of columns):

float q[][2] = {
   { 0.5, 2.7 },
   { 3.1, 0.1 }
};

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [63/79]


❖ Sidetrack: Defining New Data Types

C allows us to define new data type (names) via typedef:

typedef ExistingDataType NewTypeName;

Examples:

typedef float Temperature;

typedef int Matrix[20][20];

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [64/79]


❖ Sidetrack: Defining New Data Types (cont)

Reasons to use typedef:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [65/79]


❖ Structures

A structure

Example:

typedef struct {
       char name[30];
       int  zID;
} StudentT;

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [66/79]


❖ Structures (cont)

One structure can be nested inside another:

typedef struct {
	int day, month;
} DateT;

typedef struct {
	int hour, minute;
} TimeT;

typedef struct {
	char   plate[7];   // e.g. "DSA42X"
	double speed;
        DateT  d;
	TimeT  t;
} TicketT;

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [67/79]


❖ Structures (cont)

Possible memory layout produced for TicketT object:

---------------------------------
| D | S | A | 4 | 2 | X | \0|   |    7 bytes + 1 padding
---------------------------------
|                          68.4 |    8 bytes
---------------------------------
|             2 |             6 |    8 bytes
---------------------------------
|            20 |            45 |    8 bytes
---------------------------------

 

Note: padding is needed to ensure that plate lies on an 8-byte block.

Don't normally care about internal layout, since fields are accessed by name.

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [68/79]


❖ Structures (cont)

Defining a structured data type itself does not allocate any memory

We need to declare a variable in order to allocate memory

DateT christmas;

The components of the structure can be accessed using the "dot" operator

christmas.day   =   25;
christmas.month =   12;

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [69/79]


❖ Structures (cont)

With the above TicketT type, we declare and use variables as …


#define NUM_TICKETS 1500

typedef struct {…} TicketT;

TicketT tickets[NUM_TICKETS];  // array of structs

// Print all speeding tickets in a readable format
for (i = 0; i < NUM_TICKETS; i++) {
    printf("%s %6.2f %d/%d at %d:%d\n", tickets[i].plate,
                                        tickets[i].speed,
                                        tickets[i].d.day,
                                        tickets[i].d.month,
                                        tickets[i].t.hour,
                                        tickets[i].t.minute);
}

// Sample output:
//
// DSA42X  68.40 2/6 at 20:45

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [70/79]


❖ Structures (cont)

A structure can be passed as a parameter to a function:

void print_date(DateT d) {

	printf("%d/%d\n", d.day, d.month);
}

int is_winter(DateT d) {

	return ( (d.month >= 6) && (d.month <= 8) );
}

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [71/79]


❖ Data Abstraction

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [72/79]


❖ Abstract Data Types

A data type is …

An abstract data type

[Diagram:Pic/ADT.png]

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [73/79]


❖ Abstract Data Types (cont)

Users of the ADT see only the interface

Builders of the ADT provide an implementation

ADT interface provides

ADT implementation gives
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [74/79]


❖ Abstract Data Types (cont)

ADT interfaces are opaque

ADTs are important because …
COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [75/79]


❖ Stack vs Queue

Queue, aka FIFO data structure (first in, first out)

Insert and delete are called enqueue and dequeue

Applications:

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [76/79]


❖ Compilers

Compilers are programs that

The Gnu C compiler (gcc)

[Diagram:Pic/gcc.png]

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [77/79]


❖ Compilers (cont)

Compilation/linking with gcc

gcc -c Stack.c
produces Stack.o, from Stack.c and Stack.h

gcc -c brackets.c
produces brackets.o, from brackets.c and Stack.h

gcc -o rbt brackets.o Stack.o
links brackets.o, Stack.o and libraries
producing executable program called rbt

Note that stdio,assert included implicitly.

gcc is a multi-purpose tool

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [78/79]


❖ Summary

COMP9024 24T2 ♢ Elementary Data and Control Structures in C ♢ [79/79]



Produced: 2 Aug 2024