Description of Data Structure. What is Array, Linked-Lists and Stacks? Write a C Program to insert a element in Linked list and Push Or POP operation in Stack?

Description of Data Structure


A data structure is a way of organizing and storing data in a computer program so that it can be accessed and used efficiently. It defines the way data is stored and manipulated within a program, and can have a significant impact on the performance of the program.

There are many different types of data structures, each with its own strengths and weaknesses. Some common data structures include:


·   Arrays: A collection of elements of the same data type, stored in contiguous memory locations


·  Linked lists: A collection of nodes, each containing a data element and a reference to the next node in the list


·  Stacks: A last-in, first-out (LIFO) data structure, where elements are added and removed from the same end of the structure


·  Queues: A first-in, first-out (FIFO) data structure, where elements are added to the back and removed from the front of the structure


·  Trees: A hierarchical data structure made up of nodes, where each node has a parent and zero or more children


·  Graphs: A collection of nodes (vertices) and edges that connect them, used to represent complex relationships between data elements


The choice of data structure depends on the specific requirements of the program and the operations that will be performed on the data. By selecting an appropriate data structure and using it effectively, programmers can improve the efficiency, reliability, and scalability of their programs.


Array

An array is a data structure used in computer programming that stores a collection of elements, typically of the same data type, in contiguous memory locations. It is a way to store a list of values under a single name, making it easy to access and manipulate the data. 

Each element in an array is identified by an index, which is a numerical value indicating the position of the element within the array. The index starts at 0 for the first element, and increases by 1 for each subsequent element.

Arrays are commonly used in programming to store and manipulate large amounts of data, such as lists of numbers or strings. They are supported by most programming languages, including C, Java, Python, and JavaScript.

 

In programming, there are several types of arrays, including:

1. One-dimensional array: 

This is the simplest type of array, which stores a list of elements in a single row. Here is an example of a one-dimensional array in Python that stores a list of integers:

numbers = [1, 2, 3, 4, 5]

 

2. Two-dimensional array: 

This type of array stores elements in a two-dimensional grid or matrix, with rows and columns. Here is an example of a two-dimensional array in Java that stores a matrix of integers:

int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

 

3. Multidimensional array

This type of array stores elements in more than two dimensions. Here is an example of a three-dimensional array in C that stores a cube of integers:

int cube[3][3][3] = {

   {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}},

   {{10, 11, 12}, {13, 14, 15}, {16, 17, 18}},

   {{19, 20, 21}, {22, 23, 24}, {25, 26, 27}}

};

In the above example, the first index represents the x-axis, the second index represents the y-axis, and the third index represents the z-axis.

Note that the syntax and semantics of arrays may vary depending on the programming language you are using.


Linked List

A linked list is a data structure used in computer programming to store a sequence of elements, where each element is linked to the next one through a pointer. It is a dynamic data structure, which means that its size can be modified during runtime, unlike arrays.

There are several types of linked lists, including:

1. Singly linked list: 

Each node in the list contains a data element and a pointer to the next node in the list.

 

2. Doubly linked list: 

Each node in the list contains a data element, a pointer to the next node, and a pointer to the previous node in the list.

 

3. Circular linked list: 

This is a variation of a singly or doubly linked list, where the last node in the list points back to the first node, creating a circular structure.

 

Here is an example of a singly linked list in C, and how to insert a node at the beginning:

#include <stdio.h>

#include <stdlib.h>

// Define the node structure

struct Node {

    int data;

    struct Node* next;

};

// Function to insert a node at the beginning of the list

void insertAtBeginning(struct Node** head, int data) {

    // Create a new node

    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));

    newNode->data = data;

    newNode->next = *head;

    // Update the head to point to the new node

    *head = newNode;

}

// Function to print the list

void printList(struct Node* head) {

    printf("List: ");

    while (head != NULL) {

        printf("%d ", head->data);

        head = head->next;

    }

    printf("\n");

}

int main() {

    struct Node* head = NULL;   // Initialize the list as empty

    // Insert some nodes at the beginning of the list

    insertAtBeginning(&head, 3);

    insertAtBeginning(&head, 2);

    insertAtBeginning(&head, 1);

    // Print the list

    printList(head);

    return 0;

}

In the above example, we define a `Node` class to represent each node in the linked list, and a `LinkedList` class to manage the list. The `insert_at_beginning` method creates a new node with the specified data, sets its `next` pointer to the current head of the list, and updates the head to point to the new node. Finally, we print the list using the `print_list` method, which iterates through each node in the list and prints its data.


Stack

A stack is a linear data structure in computer science that follows the Last In First Out (LIFO) principle. In a stack, data is added and removed from the same end, which is known as the top of the stack. The two primary operations performed on a stack are push, which adds an element to the top of the stack, and pop, which removes the top element from the stack.



There are two types of stacks:

1. Static stack: A fixed amount of memory is allocated to hold the stack elements, and the size cannot be changed during runtime.

 

2. Dynamic stack: Memory is allocated on the heap during runtime to hold the stack elements, and the size can be changed dynamically.

 

Here's an example C program for push and pop operations on a dynamic stack:

#include <stdio.h>

#include <stdlib.h>

// Define the stack structure

struct Stack {

    int top;

    unsigned int capacity;

    int* array;

};

// Function to create a new stack

struct Stack* createStack(unsigned int capacity) {

    struct Stack* stack = (struct Stack*)malloc(sizeof(struct Stack));

    stack->capacity = capacity;

    stack->top = -1;

    stack->array = (int*)malloc(stack->capacity * sizeof(int));

    return stack;

}

// Function to check if the stack is full

int isFull(struct Stack* stack) {

    return stack->top == stack->capacity - 1;

}

// Function to check if the stack is empty

int isEmpty(struct Stack* stack) {

    return stack->top == -1;

}

// Function to add an element to the top of the stack

void push(struct Stack* stack, int data) {

    if (isFull(stack)) {

        printf("Error: Stack overflow!\n");

        return;

    }

    stack->array[++stack->top] = data;

    printf("Pushed %d to the stack\n", data);

}

// Function to remove the top element from the stack

int pop(struct Stack* stack) {

    if (isEmpty(stack)) {

        printf("Error: Stack underflow!\n");

        return -1;

    }

    int data = stack->array[stack->top--];

    return data;

}

int main() {

    struct Stack* stack = createStack(5);

    push(stack, 1);

    push(stack, 2);

    push(stack, 3);

    push(stack, 4);

    push(stack, 5);

    push(stack, 6);    // This will cause a stack overflow error

 

    printf("Popped %d from the stack\n", pop(stack));

    printf("Popped %d from the stack\n", pop(stack));

    printf("Popped %d from the stack\n", pop(stack));

    printf("Popped %d from the stack\n", pop(stack));

    printf("Popped %d from the stack\n", pop(stack));

    printf("Popped %d from the stack\n", pop(stack));   

    // This will cause a stack underflow error

    return 0;

}

In the above program, we define a `Stack` structure to represent the stack, and functions to create a new stack, check if the stack is full or empty, push an element to the top of the stack, and pop an element from the top of the stack. We also define the `isFull` and `isEmpty` functions to check if the stack is full or empty, respectively.

In the `main` function, we create a stack with a capacity of 5, and push 5 elements to the stack. We also try to push a 6th element to the stack, which will cause a stack overflow error.


Visit Also :-

What is Data Structure? Its Type and Operations.

https://codingtuition.blogspot.com/2023/05/what-is-data-structure-define-its-type.html

What is Searching? C Program of Linear Search and Binary Search with Algo.

https://codingtuition.blogspot.com/2023/05/searching-searching-is-process-of.html

What is Sorting? What is Bubble Sort? 

https://codingtuition.blogspot.com/2023/05/what-is-sorting-define-its-type-and_4.html

Comments

Popular posts from this blog

What is Sorting? Define Its Type and their advantage. What is Bubble Sort? Write an Algorithm and C Program for Bubble Sorting.

What is Searching? Define its Type and Characteristics. Also write a C Program for Linear Search and Binary Search.