In this module, we will delve into advanced data structures in MUMPS. Understanding these structures will allow you to handle complex data more efficiently and effectively. We will cover the following topics:

  1. Multi-dimensional Arrays
  2. Binary Trees
  3. Hash Tables
  4. Linked Lists

  1. Multi-dimensional Arrays

Explanation

Multi-dimensional arrays in MUMPS are arrays with more than one index. They are useful for representing data in a grid or matrix format.

Example

; Define a 2D array
SET matrix(1,1) = 10
SET matrix(1,2) = 20
SET matrix(2,1) = 30
SET matrix(2,2) = 40

; Accessing elements
WRITE "Element at (1,1): ", matrix(1,1), !
WRITE "Element at (2,2): ", matrix(2,2), !

Explanation of Code

  • SET matrix(1,1) = 10: Sets the element at row 1, column 1 to 10.
  • WRITE "Element at (1,1): ", matrix(1,1), !: Outputs the value of the element at row 1, column 1.

Exercise

Define a 3x3 matrix and initialize it with values from 1 to 9. Write a program to print the matrix.

Solution

; Define a 3x3 matrix
FOR i=1:1:3 FOR j=1:1:3 SET matrix(i,j) = (i-1)*3 + j

; Print the matrix
FOR i=1:1:3 DO
. FOR j=1:1:3 WRITE matrix(i,j)," "
. WRITE !

  1. Binary Trees

Explanation

A binary tree is a hierarchical data structure in which each node has at most two children, referred to as the left child and the right child.

Example

; Define a simple binary tree
SET tree("root") = "A"
SET tree("root","left") = "B"
SET tree("root","right") = "C"
SET tree("root","left","left") = "D"
SET tree("root","left","right") = "E"

; Accessing elements
WRITE "Root: ", tree("root"), !
WRITE "Left child of root: ", tree("root","left"), !
WRITE "Right child of root: ", tree("root","right"), !

Explanation of Code

  • SET tree("root") = "A": Sets the root node to "A".
  • WRITE "Root: ", tree("root"), !: Outputs the value of the root node.

Exercise

Create a binary tree with the following structure and print the left and right children of each node:

        1
       / \
      2   3
     / \
    4   5

Solution

; Define the binary tree
SET tree("root") = 1
SET tree("root","left") = 2
SET tree("root","right") = 3
SET tree("root","left","left") = 4
SET tree("root","left","right") = 5

; Print the tree structure
WRITE "Root: ", tree("root"), !
WRITE "Left child of root: ", tree("root","left"), !
WRITE "Right child of root: ", tree("root","right"), !
WRITE "Left child of left child of root: ", tree("root","left","left"), !
WRITE "Right child of left child of root: ", tree("root","left","right"), !

  1. Hash Tables

Explanation

Hash tables are data structures that map keys to values for efficient lookup. In MUMPS, global arrays can be used to implement hash tables.

Example

; Define a hash table
SET ^hash("name") = "John Doe"
SET ^hash("age") = 30
SET ^hash("city") = "New York"

; Accessing elements
WRITE "Name: ", ^hash("name"), !
WRITE "Age: ", ^hash("age"), !
WRITE "City: ", ^hash("city"), !

Explanation of Code

  • SET ^hash("name") = "John Doe": Sets the value associated with the key "name" to "John Doe".
  • WRITE "Name: ", ^hash("name"), !: Outputs the value associated with the key "name".

Exercise

Create a hash table to store the following information and print each value:

Solution

; Define the hash table
SET ^hash("username") = "jdoe"
SET ^hash("email") = "[email protected]"
SET ^hash("password") = "securepassword"

; Print the hash table values
WRITE "Username: ", ^hash("username"), !
WRITE "Email: ", ^hash("email"), !
WRITE "Password: ", ^hash("password"), !

  1. Linked Lists

Explanation

A linked list is a linear data structure where each element is a separate object, referred to as a node. Each node contains data and a reference to the next node in the sequence.

Example

; Define a simple linked list
SET list("head") = "Node1"
SET list("Node1","next") = "Node2"
SET list("Node2","next") = "Node3"
SET list("Node3","next") = ""

; Traversing the linked list
SET current = list("head")
WHILE current'="" DO
. WRITE "Current Node: ", current, !
. SET current = list(current,"next")

Explanation of Code

  • SET list("head") = "Node1": Sets the head of the list to "Node1".
  • WHILE current'="" DO: Loops through the list until the end is reached.

Exercise

Create a linked list with the following nodes and print each node:

  • "NodeA" -> "NodeB" -> "NodeC"

Solution

; Define the linked list
SET list("head") = "NodeA"
SET list("NodeA","next") = "NodeB"
SET list("NodeB","next") = "NodeC"
SET list("NodeC","next") = ""

; Print the linked list nodes
SET current = list("head")
WHILE current'="" DO
. WRITE "Current Node: ", current, !
. SET current = list(current,"next")

Conclusion

In this module, we explored advanced data structures in MUMPS, including multi-dimensional arrays, binary trees, hash tables, and linked lists. These structures are essential for managing complex data efficiently. Practice the exercises provided to reinforce your understanding and prepare for more advanced topics.

© Copyright 2024. All rights reserved