Advertisement
zoro-10

DS Practicals

Oct 16th, 2023 (edited)
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.35 KB | None | 0 0
  1. //For Educational Purpose Only 😅
  2.  
  3. // practical 1A
  4. //Reverse array
  5.  
  6. #include <iostream.h>
  7. #include <conio.h>
  8. void main()
  9. {
  10.     clrscr();
  11.     int arr[50], size, i, j, temp;
  12.     cout << "Enter array size: ";
  13.     cin >> size;
  14.     cout << "Enter array elements:\n";
  15.     for (i = 0; i < size; i++)
  16.     {
  17.         cin >> arr[i];
  18.     }
  19.     j = i - 1;
  20.     i = 0;
  21.     while (i < j)
  22.     {
  23.         temp = arr[i];
  24.         arr[i] = arr[j];
  25.         arr[j] = temp;
  26.         i++;
  27.         j--;
  28.     }
  29.     cout << "\nReverse of the array is:\n";
  30.     for (i = 0; i < size; i++)
  31.     {
  32.         cout << arr[i] << " ";
  33.     }
  34.     getch();
  35. }
  36.  
  37. //--------------------------------------------------------------------------------------------------------------------------------
  38.  
  39.  
  40. //Practical 1B
  41. //Merging array
  42. #include <iostream.h>
  43. #include <conio.h>
  44. void main()
  45. {
  46.     clrscr();
  47.     int arr1[50], arr2[50], size1, size2, size, i, j, merge[100];
  48.     cout << "Enter array1 size: ";
  49.     cin >> size1;
  50.     cout << "Enter array1 elements:\n";
  51.     for (i = 0; i < size1; i++)
  52.     {
  53.         cin >> arr1[i];
  54.     }
  55.     cout << "Enter array2 size: ";
  56.     cin >> size2;
  57.     cout << "Enter array2 elements:\n";
  58.     for (i = 0; i < size2; i++)
  59.     {
  60.         cin >> arr2[i];
  61.     }
  62.     for (i = 0; i < size1; i++)
  63.     {
  64.         merge[i] = arr1[i];
  65.     }
  66.     size = size1 + size2;
  67.     for (i = 0, j = size1; j < size && i < size2; i++, j++)
  68.     {
  69.         merge[j] = arr2[i];
  70.     }
  71.     cout << "\nThe array after merging is:\n";
  72.     for (i = 0; i < size; i++)
  73.     {
  74.         cout << merge[i] << " ";
  75.     }
  76.     getch();
  77. }
  78.  
  79. //-----------------------------------------------------------------------------------------------------------------------
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. //Pracatical 1C
  89. //Matrix operations
  90.  
  91. #include <iostream.h>
  92. #include <conio.h>
  93. void main()
  94. {
  95.     clrscr();
  96.     int mat1[3][3], mat2[3][3], mat3[3][3], i, j;
  97.     cout << "Enter Matrix1 elements:\n";
  98.     for (i = 0; i < 3; i++)
  99.     {
  100.         for (j = 0; j < 3; j++)
  101.         {
  102.             cin >> mat1[i][j];
  103.         }
  104.     }
  105.     cout << "Enter Matrix2 elements:\n";
  106.     for (i = 0; i < 3; i++)
  107.     {
  108.         for (j = 0; j < 3; j++)
  109.         {
  110.             cin >> mat2[i][j];
  111.         }
  112.     }
  113.     cout << "\nAdding two matrices to form third matrix....\n";
  114.     for (i = 0; i < 3; i++)
  115.     {
  116.         for (j = 0; j < 3; j++)
  117.         {
  118.             mat3[i][j] = mat1[i][j] + mat2[i][j];
  119.         }
  120.     }
  121.     cout << "The new matrix is:\n";
  122.     for (i = 0; i < 3; i++)
  123.     {
  124.         for (j = 0; j < 3; j++)
  125.         {
  126.             cout << mat3[i][j] << " ";
  127.         }
  128.         cout << "\n";
  129.     }
  130.     cout << "\nSubtracting two matrices to form third matrix....\n";
  131.     for (i = 0; i < 3; i++)
  132.     {
  133.         for (j = 0; j < 3; j++)
  134.         {
  135.             mat3[i][j] = mat1[i][j] - mat2[i][j];
  136.         }
  137.     }
  138.     cout << "The resultant matrix is:\n";
  139.     for (i = 0; i < 3; i++)
  140.     {
  141.         for (j = 0; j < 3; j++)
  142.         {
  143.             cout << mat3[i][j] << " ";
  144.         }
  145.         cout << "\n";
  146.     }
  147.     getch();
  148. }
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155. //Practical 2A
  156. //Singly Linked List
  157. #include <iostream.h>
  158. #include <conio.h>
  159. #include <process.h>
  160. struct node
  161. {
  162.     int info;
  163.     node *next;
  164. }
  165.     *start,
  166.     *newptr, *save;
  167. *np;
  168. node *create_new_node(int);
  169. void insert_at_beg(node *);
  170. void display(node *);
  171. void main()
  172. {
  173.     clrscr();
  174.     start = NULL;
  175.     int info;
  176.     char ch = 'y';
  177.     while (ch == 'y' || ch == 'Y')
  178.     {
  179.         cout << "\n Enter information for the new node:";
  180.         cin >> info;
  181.         cout << "\n Creating new node...Press any key to continue";
  182.         getch();
  183.         newptr = create_new_node(info);
  184.         if (newptr != NULL)
  185.         {
  186.             cout << "\n New node created";
  187.             getch();
  188.         }
  189.         else
  190.         {
  191.             cout << "\n Node not created";
  192.             getch();
  193.         }
  194.         cout << "\n Now inserting new node";
  195.         insert_at_beg(newptr);
  196.         cout << "\n Node inserted successfully...Displaying the list\n";
  197.         display(start);
  198.         cout << "\n Want to enter new node?(y/n):";
  199.         cin >> ch;
  200.     }
  201.     getch();
  202. }
  203. node *create_new_node(int n)
  204. {
  205.     node *np;
  206.     np = new node;
  207.     np->info = n;
  208.     np->next = NULL;
  209.     return np;
  210. }
  211. void insert_at_beg(node *np)
  212. {
  213.     if (start == NULL)
  214.     {
  215.         start = np;
  216.     }
  217.     else
  218.     {
  219.         save = start;
  220.         save->next = np;
  221.         save = np;
  222.     }
  223. }
  224. void display(node *np)
  225. {
  226.     while (np != NULL)
  227.     {
  228.         cout << np->info << "->";
  229.         np = np->next;
  230.     }
  231. }
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238. //Practical 2B
  239. //Doubly Linked List
  240.  
  241. #include <iostream.h>
  242. #include <conio.h>
  243. #include <process.h>
  244. struct node
  245. {
  246.     int info;
  247.     node *next;
  248.     node *prev;
  249. };
  250.  
  251. node *start, *newptr, *save, *np;
  252.  
  253. node *create_new_node(int);
  254. void insert_at_beg(node *);
  255. void display(node *);
  256.  
  257. int main()
  258. {
  259.     clrscr();
  260.     start = NULL;
  261.     int info;
  262.     char ch = 'y';
  263.     while (ch == 'y' || ch == 'Y')
  264.     {
  265.         cout << "Enter information for the new node";
  266.         cin >> info;
  267.         cout << "\n Creating new node...press any key to continue:";
  268.         getch();
  269.  
  270.         newptr = create_new_node(info);
  271.         if (newptr != NULL)
  272.         {
  273.             cout << "\n New node created";
  274.             getch();
  275.         }
  276.         else
  277.         {
  278.             cout << "\n Node not created";
  279.             getch();
  280.         }
  281.         cout << "\n Now inserting a new node";
  282.         insert_at_beg(newptr);
  283.         cout << "\n Node created successfully and displaying the list \n";
  284.         display(start);
  285.         cout << "\n Want to enter the new node?(y/n)";
  286.         cin >> ch;
  287.     }
  288.     getch();
  289.     return 0;
  290. }
  291.  
  292. node *create_new_node(int n)
  293. {
  294.     node *np;
  295.     np = new node;
  296.     np->info = n;
  297.     np->next = NULL;
  298.     np->prev = NULL;
  299.     return np;
  300. }
  301.  
  302. void insert_at_beg(node *np)
  303. {
  304.     if (start == NULL)
  305.     {
  306.         start = np;
  307.     }
  308.     else
  309.     {
  310.         save = start;
  311.         save->next = np;
  312.         np->prev = save;
  313.         save = np;
  314.     }
  315. }
  316.  
  317. void display(node *np)
  318. {
  319.     while (np != NULL)
  320.     {
  321.         cout << np->info << "->";
  322.         np = np->next;
  323.     }
  324. }
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332. //Practical 3A
  333. //Selection Sort
  334. #include <iostream.h>
  335. #include <conio.h>
  336. void main()
  337. {
  338.     clrscr();
  339.     int size, arr[50], i, j, temp;
  340.     cout << "Enter array size: ";
  341.     cin >> size;
  342.     cout << "Enter array elements:\n";
  343.     for (i = 0; i < size; i++)
  344.     {
  345.         cin >> arr[i];
  346.     }
  347.     cout << "\nSorting array using Selection sort...\n";
  348.     for (i = 0; i < size; i++)
  349.     {
  350.         for (j = i + 1; j < size; j++)
  351.         {
  352.             if (arr[i] > arr[j])
  353.             {
  354.                 temp = arr[i];
  355.                 arr[i] = arr[j];
  356.                 arr[j] = temp;
  357.             }
  358.         }
  359.     }
  360.     cout << "Array after sorting:\n";
  361.     for (i = 0; i < size; i++)
  362.     {
  363.         cout << arr[i] << " ";
  364.     }
  365.     getch();
  366. }
  367.  
  368.  
  369.  
  370.  
  371. // Practical 3B
  372. //Insertion Sort
  373.  
  374. #include <iostream.h>
  375. #include <conio.h>
  376. void main()
  377. {
  378.     clrscr();
  379.     int size, arr[50], i, j, temp;
  380.     cout << "Enter array size: ";
  381.     cin >> size;
  382.     cout << "Enter array elements:\n";
  383.     for (i = 0; i < size; i++)
  384.     {
  385.         cin >> arr[i];
  386.     }
  387.     cout << "\nSorting array using Insertion sort...\n";
  388.     for (i = 1; i < size; i++)
  389.     {
  390.         temp = arr[i];
  391.         j = i - 1;
  392.         while ((temp < arr[j]) && (j >= 0))
  393.         {
  394.             arr[j + 1] = arr[j];
  395.             j = j - 1;
  396.         }
  397.         arr[j + 1] = temp;
  398.     }
  399.     cout << "Array after sorting:\n";
  400.     for (i = 0; i < size; i++)
  401.     {
  402.         cout << arr[i] << " ";
  403.     }
  404.     getch();
  405. }
  406.  
  407.  
  408.  
  409. //Practical 4A
  410. //Sequential Search
  411.  
  412. #include <iostream.h>
  413. #include <conio.h>
  414. int main()
  415. {
  416.     clrscr();
  417.     cout << "Enter the size of array: ";
  418.     int size;
  419.     cin >> size;
  420.     int array[50], key, i;
  421.     for (int j = 0; j < size; j++)
  422.     {
  423.         cout << "Enter " << j << " Element: ";
  424.         cin >> array[j];
  425.     }
  426.     for (int a = 0; a < size; a++)
  427.     {
  428.         cout << "array[" << a << "] = ";
  429.         cout << array[a] << endl;
  430.     }
  431.     cout << "\nEnter key to search in array: ";
  432.     cin >> key;
  433.     for (i = 0; i < size; i++)
  434.     {
  435.         if (key == array[i])
  436.         {
  437.             cout << "Key found at index number: " << i << endl;
  438.             break;
  439.         }
  440.     }
  441.     if (i != size)
  442.     {
  443.         cout << " ";
  444.     }
  445.     else
  446.     {
  447.         cout << "Key not found in array";
  448.     }
  449.     getch();
  450.     return 0;
  451.    
  452. }
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459. //Practical 4B
  460. //Binary Search
  461.  
  462. #include <iostream.h>
  463. #include <conio.h>
  464. void main()
  465. {
  466.     clrscr();
  467.     int n, i, a[50], search, first, last, middle;
  468.     cout << "Enter total number of elements: ";
  469.     cin >> n;
  470.     cout << "Enter " << n << " numbers: " << endl;
  471.     for (i = 0; i < n; i++)
  472.     {
  473.         cin >> a[i];
  474.     }
  475.     cout << "\nEnter a number to find: ";
  476.     cin >> search;
  477.     first = 0;
  478.     last = n - 1;
  479.     middle = (first + last) / 2;
  480.     while (first <= last)
  481.     {
  482.         if (a[middle] < search)
  483.         {
  484.             first = middle + 1;
  485.         }
  486.         else if (a[middle] == search)
  487.         {
  488.             cout << search << " found at location " << middle + 1 << endl;
  489.             break;
  490.         }
  491.         else
  492.         {
  493.             last = middle - 1;
  494.         }
  495.         middle = (first + last) / 2;
  496.     }
  497.     if (first > last)
  498.     {
  499.         cout << "Not found! " << search << " is not present in the list.";
  500.     }
  501.     getch();
  502. }
  503.  
  504.  
  505.  
  506.  
  507.  
  508. //Practical 5A
  509. //Stack
  510.  
  511. #include <iostream.h>
  512. #include <conio.h>
  513. #include <stdlib.h>
  514. class stack
  515. {
  516. public:
  517.     int stk[5], top;
  518.     stack()
  519.     {
  520.         top = -1;
  521.     }
  522.     void push(int x)
  523.     {
  524.         if (top > 4)
  525.         {
  526.             cout << "Stack overflow\n";
  527.             return;
  528.         }
  529.         stk[++top] = x;
  530.         cout << x << "Inserted in the stack\n";
  531.     }
  532.     void pop()
  533.     {
  534.         if (top < 0)
  535.         {
  536.             cout << "Stack Underflow\n";
  537.             return;
  538.         }
  539.         cout << stk[top--] << " Deleted from the stack\n";
  540.     }
  541. };
  542. void display(stack s)
  543. {
  544.     if (s.top < 0)
  545.     {
  546.         cout << "Stack Empty\n";
  547.         return;
  548.     }
  549.     for (int i = s.top; i >= 0; i--)
  550.         cout << s.stk[i] << " \n";
  551. }
  552. void main()
  553. {
  554.     clrscr();
  555.     int ch;
  556.     stack st;
  557.     while (1)
  558.     {
  559.         cout << "\n1.Push  2.Pop  3.Display";
  560.         cout << "4.Exit \nEnter your choice:";
  561.         cin >> ch;
  562.         switch (ch)
  563.         {
  564.         case 1:
  565.             cout << "Enter the element: ";
  566.             cin >> ch;
  567.             st.push(ch);
  568.             break;
  569.         case 2:
  570.             st.pop();
  571.             break;
  572.         case 3:
  573.             display(st);
  574.             break;
  575.         case 4:
  576.             exit(0);
  577.         }
  578.     }
  579. }
  580.  
  581.  
  582.  
  583.  
  584.  
  585. //Practical 6A
  586. //Queue
  587.  
  588. #include <iostream.h>
  589. #include <conio.h>
  590. #include <stdlib.h>
  591. class queue
  592. {
  593. public:
  594.     int que[5], rear, front;
  595.     queue()
  596.     {
  597.         rear = -1;
  598.         front = -1;
  599.     }
  600.     void insert(int x)
  601.     {
  602.         if (rear > 4)
  603.         {
  604.             cout << "Queue Overflow\n";
  605.             front = rear = -1;
  606.             return;
  607.         }
  608.         que[++rear] = x;
  609.         cout << x << " Inserted\n";
  610.     }
  611.     void delet()
  612.     {
  613.         if (front == rear)
  614.         {
  615.             cout << "Queue Underflow\n";
  616.             return;
  617.         }
  618.         cout << que[++front] << " Deleted\n";
  619.     }
  620. };
  621. void display(queue q)
  622. {
  623.     if (q.rear == q.front)
  624.     {
  625.         cout << "Queue Empty\n";
  626.         return;
  627.     }
  628.     for (int i = q.front + 1; i <= q.rear; i++)
  629.         cout << q.que[i] << " ";
  630. }
  631. void main()
  632. {
  633.     clrscr();
  634.     int ch;
  635.     queue qu;
  636.     while (1)
  637.     {
  638.         cout << "\n1.Insert 2.Delete 3.Display 4.Exit \nEnter your choice:";
  639.         cin >> ch;
  640.         switch (ch)
  641.         {
  642.         case 1:
  643.             cout << "Enter the element:";
  644.             cin >> ch;
  645.             qu.insert(ch);
  646.             break;
  647.         case 2:
  648.             qu.delet();
  649.             break;
  650.         case 3:
  651.             display(qu);
  652.             break;
  653.         case 4:
  654.             exit(0);
  655.         }
  656.     }
  657. }
  658.  
  659.  
  660. //Practical 7
  661. //Max Heap
  662.  
  663. #include <iostream.h>
  664. #include <conio.h>
  665. void max_heapify(int *a, int i, int n)
  666. {
  667.     int j, temp;
  668.     temp = a[i];
  669.     j = 2 * i;
  670.     while (j <= n)
  671.     {
  672.         if (j < n && a[j + 1] > a[j])
  673.             j = j + 1;
  674.         if (temp > a[j])
  675.             break;
  676.         else if (temp <= a[j])
  677.         {
  678.             a[j / 2] = a[j];
  679.             j = 2 * j;
  680.         }
  681.     }
  682.     a[j / 2] = temp;
  683.     return;
  684. }
  685. void build_maxheap(int *a, int n)
  686. {
  687.     int i;
  688.     for (i = n / 2; i >= 1; i--)
  689.     {
  690.         max_heapify(a, i, n);
  691.     }
  692. }
  693. int main()
  694. {
  695.     clrscr();
  696.     int n, i, x;
  697.     cout << "Enter number of elements in array:\n";
  698.     cin >> n;
  699.     int a[20];
  700.     for (i = 1; i <= n; i++)
  701.     {
  702.         cout << "Enter element " << i << endl;
  703.         cin >> a[i];
  704.     }
  705.     build_maxheap(a, n);
  706.     cout << "Max Heap\n";
  707.     for (i = 1; i <= n; i++)
  708.     {
  709.         cout << a[i] << endl;
  710.     }
  711.     getch();
  712.     return 0;
  713. }
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722. //Practical 8
  723. //Adjacency Matrix
  724.  
  725. #include <iostream.h>
  726. #include <conio.h>
  727.  
  728. class adjacencyMatrix
  729. {
  730.   int n;
  731.   int **adj;
  732.  
  733. public:
  734.   adjacencyMatrix(int n)
  735.   {
  736.     this->n = n;
  737.     adj = new int *[n];
  738.     for (int i = 0; i < n; i++)
  739.     {
  740.       adj[i] = new int[n];
  741.       for (int j = 0; j < n; j++)
  742.       {
  743.         adj[i][j] = 0;
  744.       }
  745.     }
  746.   }
  747.   void addEdge(int u, int v)
  748.   {
  749.     if (u > n || v > n || u < 0 || v < 0)
  750.     {
  751.       cout << "Invalid edges!" << endl;
  752.     }
  753.     else
  754.     {
  755.       adj[u - 1][v - 1] = 1;
  756.     }
  757.   }
  758.   void display()
  759.   {
  760.     for (int i = 0; i < n; i++)
  761.     {
  762.       for (int j = 0; j < n; j++)
  763.       {
  764.         cout << adj[i][j] << " ";
  765.       }
  766.       cout << endl;
  767.     }
  768.   }
  769. };
  770.  
  771. int main()
  772. {
  773.   int nodes, maxEdges, u, v;
  774.   cout << "Enter number of nodes : ";
  775.   cin >> nodes;
  776.  
  777.   adjacencyMatrix am(nodes);
  778.   maxEdges = nodes * (nodes - 1);
  779.  
  780.   for (int i = 0; i < maxEdges; i++)
  781.   {
  782.     cout << "Enter edge (-1 -1 to exit) : ";
  783.     cin >> u >> v;
  784.     if (u == -1 && v == -1)
  785.       break;
  786.  
  787.     am.addEdge(u, v);
  788.   }
  789.  
  790.   am.display();
  791.   getch();
  792.   return 0;
  793. }
  794.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement