Doubly linked list Example

Committer:
shivanandgowdakr
Date:
Mon Sep 16 13:57:00 2019 +0000
Revision:
0:a76236b7a8e6
Doubly Linked List using STM32

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shivanandgowdakr 0:a76236b7a8e6 1 /* mbed Microcontroller Library
shivanandgowdakr 0:a76236b7a8e6 2 * Copyright (c) 2018 ARM Limited
shivanandgowdakr 0:a76236b7a8e6 3 * SPDX-License-Identifier: Apache-2.0
shivanandgowdakr 0:a76236b7a8e6 4 */
shivanandgowdakr 0:a76236b7a8e6 5
shivanandgowdakr 0:a76236b7a8e6 6 #include "mbed.h"
shivanandgowdakr 0:a76236b7a8e6 7 #include "ThisThread.h"
shivanandgowdakr 0:a76236b7a8e6 8 #include "stats_report.h"
shivanandgowdakr 0:a76236b7a8e6 9
shivanandgowdakr 0:a76236b7a8e6 10
shivanandgowdakr 0:a76236b7a8e6 11 #include <stdio.h>
shivanandgowdakr 0:a76236b7a8e6 12 #include <stdlib.h>
shivanandgowdakr 0:a76236b7a8e6 13
shivanandgowdakr 0:a76236b7a8e6 14 DigitalOut led1(LED1);
shivanandgowdakr 0:a76236b7a8e6 15
shivanandgowdakr 0:a76236b7a8e6 16 #define SLEEP_TIME 500 // (msec)
shivanandgowdakr 0:a76236b7a8e6 17 #define PRINT_AFTER_N_LOOPS 20
shivanandgowdakr 0:a76236b7a8e6 18
shivanandgowdakr 0:a76236b7a8e6 19
shivanandgowdakr 0:a76236b7a8e6 20
shivanandgowdakr 0:a76236b7a8e6 21 struct node
shivanandgowdakr 0:a76236b7a8e6 22 {
shivanandgowdakr 0:a76236b7a8e6 23 struct node *prev;
shivanandgowdakr 0:a76236b7a8e6 24 int n;
shivanandgowdakr 0:a76236b7a8e6 25 struct node *next;
shivanandgowdakr 0:a76236b7a8e6 26 }*h,*temp,*temp1,*temp2,*temp4;
shivanandgowdakr 0:a76236b7a8e6 27
shivanandgowdakr 0:a76236b7a8e6 28 void insert1();
shivanandgowdakr 0:a76236b7a8e6 29 void insert2();
shivanandgowdakr 0:a76236b7a8e6 30 void insert3();
shivanandgowdakr 0:a76236b7a8e6 31 void traversebeg();
shivanandgowdakr 0:a76236b7a8e6 32 void traverseend(int);
shivanandgowdakr 0:a76236b7a8e6 33 void sort();
shivanandgowdakr 0:a76236b7a8e6 34 void search();
shivanandgowdakr 0:a76236b7a8e6 35 void update();
shivanandgowdakr 0:a76236b7a8e6 36 void d_delete();
shivanandgowdakr 0:a76236b7a8e6 37
shivanandgowdakr 0:a76236b7a8e6 38 int counter = 0;
shivanandgowdakr 0:a76236b7a8e6 39
shivanandgowdakr 0:a76236b7a8e6 40 int main()
shivanandgowdakr 0:a76236b7a8e6 41 {
shivanandgowdakr 0:a76236b7a8e6 42 int ch;
shivanandgowdakr 0:a76236b7a8e6 43
shivanandgowdakr 0:a76236b7a8e6 44 h = NULL;
shivanandgowdakr 0:a76236b7a8e6 45 temp = temp1 = NULL;
shivanandgowdakr 0:a76236b7a8e6 46
shivanandgowdakr 0:a76236b7a8e6 47 printf("\n 1 - Insert at beginning");
shivanandgowdakr 0:a76236b7a8e6 48 printf("\n 2 - Insert at end");
shivanandgowdakr 0:a76236b7a8e6 49 printf("\n 3 - Insert at position i");
shivanandgowdakr 0:a76236b7a8e6 50 printf("\n 4 - Delete at i");
shivanandgowdakr 0:a76236b7a8e6 51 printf("\n 5 - Display from beginning");
shivanandgowdakr 0:a76236b7a8e6 52 printf("\n 6 - Display from end");
shivanandgowdakr 0:a76236b7a8e6 53 printf("\n 7 - Search for element");
shivanandgowdakr 0:a76236b7a8e6 54 printf("\n 8 - Sort the list");
shivanandgowdakr 0:a76236b7a8e6 55 printf("\n 9 - Update an element");
shivanandgowdakr 0:a76236b7a8e6 56 printf("\n 10 - Exit");
shivanandgowdakr 0:a76236b7a8e6 57
shivanandgowdakr 0:a76236b7a8e6 58 while (1)
shivanandgowdakr 0:a76236b7a8e6 59 {
shivanandgowdakr 0:a76236b7a8e6 60 printf("\n Enter choice : ");
shivanandgowdakr 0:a76236b7a8e6 61 scanf("%d", &ch);
shivanandgowdakr 0:a76236b7a8e6 62 switch (ch)
shivanandgowdakr 0:a76236b7a8e6 63 {
shivanandgowdakr 0:a76236b7a8e6 64 case 1:
shivanandgowdakr 0:a76236b7a8e6 65 insert1();
shivanandgowdakr 0:a76236b7a8e6 66 break;
shivanandgowdakr 0:a76236b7a8e6 67 case 2:
shivanandgowdakr 0:a76236b7a8e6 68 insert2();
shivanandgowdakr 0:a76236b7a8e6 69 break;
shivanandgowdakr 0:a76236b7a8e6 70 case 3:
shivanandgowdakr 0:a76236b7a8e6 71 insert3();
shivanandgowdakr 0:a76236b7a8e6 72 break;
shivanandgowdakr 0:a76236b7a8e6 73 case 4:
shivanandgowdakr 0:a76236b7a8e6 74 d_delete();
shivanandgowdakr 0:a76236b7a8e6 75 break;
shivanandgowdakr 0:a76236b7a8e6 76 case 5:
shivanandgowdakr 0:a76236b7a8e6 77 traversebeg();
shivanandgowdakr 0:a76236b7a8e6 78 break;
shivanandgowdakr 0:a76236b7a8e6 79 case 6:
shivanandgowdakr 0:a76236b7a8e6 80 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 81 if (temp2 == NULL)
shivanandgowdakr 0:a76236b7a8e6 82 printf("\n Error : List empty to display ");
shivanandgowdakr 0:a76236b7a8e6 83 else
shivanandgowdakr 0:a76236b7a8e6 84 {
shivanandgowdakr 0:a76236b7a8e6 85 printf("\n Reverse order of linked list is : ");
shivanandgowdakr 0:a76236b7a8e6 86 traverseend(temp2->n);
shivanandgowdakr 0:a76236b7a8e6 87 }
shivanandgowdakr 0:a76236b7a8e6 88 break;
shivanandgowdakr 0:a76236b7a8e6 89 case 7:
shivanandgowdakr 0:a76236b7a8e6 90 search();
shivanandgowdakr 0:a76236b7a8e6 91 break;
shivanandgowdakr 0:a76236b7a8e6 92 case 8:
shivanandgowdakr 0:a76236b7a8e6 93 sort();
shivanandgowdakr 0:a76236b7a8e6 94 break;
shivanandgowdakr 0:a76236b7a8e6 95 case 9:
shivanandgowdakr 0:a76236b7a8e6 96 update();
shivanandgowdakr 0:a76236b7a8e6 97 break;
shivanandgowdakr 0:a76236b7a8e6 98 case 10:
shivanandgowdakr 0:a76236b7a8e6 99 exit(0);
shivanandgowdakr 0:a76236b7a8e6 100 default:
shivanandgowdakr 0:a76236b7a8e6 101 printf("\n Wrong choice menu");
shivanandgowdakr 0:a76236b7a8e6 102 }
shivanandgowdakr 0:a76236b7a8e6 103 }
shivanandgowdakr 0:a76236b7a8e6 104 }
shivanandgowdakr 0:a76236b7a8e6 105
shivanandgowdakr 0:a76236b7a8e6 106 /* TO create an empty node */
shivanandgowdakr 0:a76236b7a8e6 107 void create()
shivanandgowdakr 0:a76236b7a8e6 108 {
shivanandgowdakr 0:a76236b7a8e6 109 int data;
shivanandgowdakr 0:a76236b7a8e6 110
shivanandgowdakr 0:a76236b7a8e6 111 temp =(struct node *)malloc(1*sizeof(struct node));
shivanandgowdakr 0:a76236b7a8e6 112 temp->prev = NULL;
shivanandgowdakr 0:a76236b7a8e6 113 temp->next = NULL;
shivanandgowdakr 0:a76236b7a8e6 114 printf("\n Enter value to node : ");
shivanandgowdakr 0:a76236b7a8e6 115 scanf("%d", &data);
shivanandgowdakr 0:a76236b7a8e6 116 temp->n = data;
shivanandgowdakr 0:a76236b7a8e6 117 counter++;
shivanandgowdakr 0:a76236b7a8e6 118 }
shivanandgowdakr 0:a76236b7a8e6 119
shivanandgowdakr 0:a76236b7a8e6 120 /* TO insert at beginning */
shivanandgowdakr 0:a76236b7a8e6 121 void insert1()
shivanandgowdakr 0:a76236b7a8e6 122 {
shivanandgowdakr 0:a76236b7a8e6 123 if (h == NULL)
shivanandgowdakr 0:a76236b7a8e6 124 {
shivanandgowdakr 0:a76236b7a8e6 125 create();
shivanandgowdakr 0:a76236b7a8e6 126 h = temp;
shivanandgowdakr 0:a76236b7a8e6 127 temp1 = h;
shivanandgowdakr 0:a76236b7a8e6 128 }
shivanandgowdakr 0:a76236b7a8e6 129 else
shivanandgowdakr 0:a76236b7a8e6 130 {
shivanandgowdakr 0:a76236b7a8e6 131 create();
shivanandgowdakr 0:a76236b7a8e6 132 temp->next = h;
shivanandgowdakr 0:a76236b7a8e6 133 h->prev = temp;
shivanandgowdakr 0:a76236b7a8e6 134 h = temp;
shivanandgowdakr 0:a76236b7a8e6 135 }
shivanandgowdakr 0:a76236b7a8e6 136 }
shivanandgowdakr 0:a76236b7a8e6 137
shivanandgowdakr 0:a76236b7a8e6 138 /* To insert at end */
shivanandgowdakr 0:a76236b7a8e6 139 void insert2()
shivanandgowdakr 0:a76236b7a8e6 140 {
shivanandgowdakr 0:a76236b7a8e6 141 if (h == NULL)
shivanandgowdakr 0:a76236b7a8e6 142 {
shivanandgowdakr 0:a76236b7a8e6 143 create();
shivanandgowdakr 0:a76236b7a8e6 144 h = temp;
shivanandgowdakr 0:a76236b7a8e6 145 temp1 = h;
shivanandgowdakr 0:a76236b7a8e6 146 }
shivanandgowdakr 0:a76236b7a8e6 147 else
shivanandgowdakr 0:a76236b7a8e6 148 {
shivanandgowdakr 0:a76236b7a8e6 149 create();
shivanandgowdakr 0:a76236b7a8e6 150 temp1->next = temp;
shivanandgowdakr 0:a76236b7a8e6 151 temp->prev = temp1;
shivanandgowdakr 0:a76236b7a8e6 152 temp1 = temp;
shivanandgowdakr 0:a76236b7a8e6 153 }
shivanandgowdakr 0:a76236b7a8e6 154 }
shivanandgowdakr 0:a76236b7a8e6 155
shivanandgowdakr 0:a76236b7a8e6 156 /* To insert at any position */
shivanandgowdakr 0:a76236b7a8e6 157 void insert3()
shivanandgowdakr 0:a76236b7a8e6 158 {
shivanandgowdakr 0:a76236b7a8e6 159 int pos, i = 2;
shivanandgowdakr 0:a76236b7a8e6 160
shivanandgowdakr 0:a76236b7a8e6 161 printf("\n Enter position to be inserted : ");
shivanandgowdakr 0:a76236b7a8e6 162 scanf("%d", &pos);
shivanandgowdakr 0:a76236b7a8e6 163 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 164
shivanandgowdakr 0:a76236b7a8e6 165 if ((pos < 1) || (pos >= counter + 1))
shivanandgowdakr 0:a76236b7a8e6 166 {
shivanandgowdakr 0:a76236b7a8e6 167 printf("\n Position out of range to insert");
shivanandgowdakr 0:a76236b7a8e6 168 return;
shivanandgowdakr 0:a76236b7a8e6 169 }
shivanandgowdakr 0:a76236b7a8e6 170 if ((h == NULL) && (pos != 1))
shivanandgowdakr 0:a76236b7a8e6 171 {
shivanandgowdakr 0:a76236b7a8e6 172 printf("\n Empty list cannot insert other than 1st position");
shivanandgowdakr 0:a76236b7a8e6 173 return;
shivanandgowdakr 0:a76236b7a8e6 174 }
shivanandgowdakr 0:a76236b7a8e6 175 if ((h == NULL) && (pos == 1))
shivanandgowdakr 0:a76236b7a8e6 176 {
shivanandgowdakr 0:a76236b7a8e6 177 create();
shivanandgowdakr 0:a76236b7a8e6 178 h = temp;
shivanandgowdakr 0:a76236b7a8e6 179 temp1 = h;
shivanandgowdakr 0:a76236b7a8e6 180 return;
shivanandgowdakr 0:a76236b7a8e6 181 }
shivanandgowdakr 0:a76236b7a8e6 182 else
shivanandgowdakr 0:a76236b7a8e6 183 {
shivanandgowdakr 0:a76236b7a8e6 184 while (i < pos)
shivanandgowdakr 0:a76236b7a8e6 185 {
shivanandgowdakr 0:a76236b7a8e6 186 temp2 = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 187 i++;
shivanandgowdakr 0:a76236b7a8e6 188 }
shivanandgowdakr 0:a76236b7a8e6 189 create();
shivanandgowdakr 0:a76236b7a8e6 190 temp->prev = temp2;
shivanandgowdakr 0:a76236b7a8e6 191 temp->next = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 192 temp2->next->prev = temp;
shivanandgowdakr 0:a76236b7a8e6 193 temp2->next = temp;
shivanandgowdakr 0:a76236b7a8e6 194 }
shivanandgowdakr 0:a76236b7a8e6 195 }
shivanandgowdakr 0:a76236b7a8e6 196
shivanandgowdakr 0:a76236b7a8e6 197 /* To delete an element */
shivanandgowdakr 0:a76236b7a8e6 198 void d_delete()
shivanandgowdakr 0:a76236b7a8e6 199 {
shivanandgowdakr 0:a76236b7a8e6 200 int i = 1, pos;
shivanandgowdakr 0:a76236b7a8e6 201
shivanandgowdakr 0:a76236b7a8e6 202 printf("\n Enter position to be deleted : ");
shivanandgowdakr 0:a76236b7a8e6 203 scanf("%d", &pos);
shivanandgowdakr 0:a76236b7a8e6 204 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 205
shivanandgowdakr 0:a76236b7a8e6 206 if ((pos < 1) || (pos >= counter + 1))
shivanandgowdakr 0:a76236b7a8e6 207 {
shivanandgowdakr 0:a76236b7a8e6 208 printf("\n Error : Position out of range to delete");
shivanandgowdakr 0:a76236b7a8e6 209 return;
shivanandgowdakr 0:a76236b7a8e6 210 }
shivanandgowdakr 0:a76236b7a8e6 211 if (h == NULL)
shivanandgowdakr 0:a76236b7a8e6 212 {
shivanandgowdakr 0:a76236b7a8e6 213 printf("\n Error : Empty list no elements to delete");
shivanandgowdakr 0:a76236b7a8e6 214 return;
shivanandgowdakr 0:a76236b7a8e6 215 }
shivanandgowdakr 0:a76236b7a8e6 216 else
shivanandgowdakr 0:a76236b7a8e6 217 {
shivanandgowdakr 0:a76236b7a8e6 218 while (i < pos)
shivanandgowdakr 0:a76236b7a8e6 219 {
shivanandgowdakr 0:a76236b7a8e6 220 temp2 = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 221 i++;
shivanandgowdakr 0:a76236b7a8e6 222 }
shivanandgowdakr 0:a76236b7a8e6 223 if (i == 1)
shivanandgowdakr 0:a76236b7a8e6 224 {
shivanandgowdakr 0:a76236b7a8e6 225 if (temp2->next == NULL)
shivanandgowdakr 0:a76236b7a8e6 226 {
shivanandgowdakr 0:a76236b7a8e6 227 printf("Node deleted from list");
shivanandgowdakr 0:a76236b7a8e6 228 free(temp2);
shivanandgowdakr 0:a76236b7a8e6 229 temp2 = h = NULL;
shivanandgowdakr 0:a76236b7a8e6 230 return;
shivanandgowdakr 0:a76236b7a8e6 231 }
shivanandgowdakr 0:a76236b7a8e6 232 }
shivanandgowdakr 0:a76236b7a8e6 233 if (temp2->next == NULL)
shivanandgowdakr 0:a76236b7a8e6 234 {
shivanandgowdakr 0:a76236b7a8e6 235 temp2->prev->next = NULL;
shivanandgowdakr 0:a76236b7a8e6 236 free(temp2);
shivanandgowdakr 0:a76236b7a8e6 237 printf("Node deleted from list");
shivanandgowdakr 0:a76236b7a8e6 238 return;
shivanandgowdakr 0:a76236b7a8e6 239 }
shivanandgowdakr 0:a76236b7a8e6 240 temp2->next->prev = temp2->prev;
shivanandgowdakr 0:a76236b7a8e6 241 if (i != 1)
shivanandgowdakr 0:a76236b7a8e6 242 temp2->prev->next = temp2->next; /* Might not need this statement if i == 1 check */
shivanandgowdakr 0:a76236b7a8e6 243 if (i == 1)
shivanandgowdakr 0:a76236b7a8e6 244 h = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 245 printf("\n Node deleted");
shivanandgowdakr 0:a76236b7a8e6 246 free(temp2);
shivanandgowdakr 0:a76236b7a8e6 247 }
shivanandgowdakr 0:a76236b7a8e6 248 counter--;
shivanandgowdakr 0:a76236b7a8e6 249 }
shivanandgowdakr 0:a76236b7a8e6 250
shivanandgowdakr 0:a76236b7a8e6 251 /* Traverse from beginning */
shivanandgowdakr 0:a76236b7a8e6 252 void traversebeg()
shivanandgowdakr 0:a76236b7a8e6 253 {
shivanandgowdakr 0:a76236b7a8e6 254 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 255
shivanandgowdakr 0:a76236b7a8e6 256 if (temp2 == NULL)
shivanandgowdakr 0:a76236b7a8e6 257 {
shivanandgowdakr 0:a76236b7a8e6 258 printf("List empty to display \n");
shivanandgowdakr 0:a76236b7a8e6 259 return;
shivanandgowdakr 0:a76236b7a8e6 260 }
shivanandgowdakr 0:a76236b7a8e6 261 printf("\n Linked list elements from begining : ");
shivanandgowdakr 0:a76236b7a8e6 262
shivanandgowdakr 0:a76236b7a8e6 263 while (temp2->next != NULL)
shivanandgowdakr 0:a76236b7a8e6 264 {
shivanandgowdakr 0:a76236b7a8e6 265 printf(" %d ", temp2->n);
shivanandgowdakr 0:a76236b7a8e6 266 temp2 = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 267 }
shivanandgowdakr 0:a76236b7a8e6 268 printf(" %d ", temp2->n);
shivanandgowdakr 0:a76236b7a8e6 269 }
shivanandgowdakr 0:a76236b7a8e6 270
shivanandgowdakr 0:a76236b7a8e6 271 /* To traverse from end recursively */
shivanandgowdakr 0:a76236b7a8e6 272 void traverseend(int i)
shivanandgowdakr 0:a76236b7a8e6 273 {
shivanandgowdakr 0:a76236b7a8e6 274 if (temp2 != NULL)
shivanandgowdakr 0:a76236b7a8e6 275 {
shivanandgowdakr 0:a76236b7a8e6 276 i = temp2->n;
shivanandgowdakr 0:a76236b7a8e6 277 temp2 = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 278 traverseend(i);
shivanandgowdakr 0:a76236b7a8e6 279 printf(" %d ", i);
shivanandgowdakr 0:a76236b7a8e6 280 }
shivanandgowdakr 0:a76236b7a8e6 281 }
shivanandgowdakr 0:a76236b7a8e6 282
shivanandgowdakr 0:a76236b7a8e6 283 /* To search for an element in the list */
shivanandgowdakr 0:a76236b7a8e6 284 void search()
shivanandgowdakr 0:a76236b7a8e6 285 {
shivanandgowdakr 0:a76236b7a8e6 286 int data, counter = 0;
shivanandgowdakr 0:a76236b7a8e6 287 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 288
shivanandgowdakr 0:a76236b7a8e6 289 if (temp2 == NULL)
shivanandgowdakr 0:a76236b7a8e6 290 {
shivanandgowdakr 0:a76236b7a8e6 291 printf("\n Error : List empty to search for data");
shivanandgowdakr 0:a76236b7a8e6 292 return;
shivanandgowdakr 0:a76236b7a8e6 293 }
shivanandgowdakr 0:a76236b7a8e6 294 printf("\n Enter value to search : ");
shivanandgowdakr 0:a76236b7a8e6 295 scanf("%d", &data);
shivanandgowdakr 0:a76236b7a8e6 296 while (temp2 != NULL)
shivanandgowdakr 0:a76236b7a8e6 297 {
shivanandgowdakr 0:a76236b7a8e6 298 if (temp2->n == data)
shivanandgowdakr 0:a76236b7a8e6 299 {
shivanandgowdakr 0:a76236b7a8e6 300 printf("\n Data found in %d position",counter + 1);
shivanandgowdakr 0:a76236b7a8e6 301 return;
shivanandgowdakr 0:a76236b7a8e6 302 }
shivanandgowdakr 0:a76236b7a8e6 303 else
shivanandgowdakr 0:a76236b7a8e6 304 temp2 = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 305 counter++;
shivanandgowdakr 0:a76236b7a8e6 306 }
shivanandgowdakr 0:a76236b7a8e6 307 printf("\n Error : %d not found in list", data);
shivanandgowdakr 0:a76236b7a8e6 308 }
shivanandgowdakr 0:a76236b7a8e6 309
shivanandgowdakr 0:a76236b7a8e6 310 /* To update a node value in the list */
shivanandgowdakr 0:a76236b7a8e6 311 void update()
shivanandgowdakr 0:a76236b7a8e6 312 {
shivanandgowdakr 0:a76236b7a8e6 313 int data, data1;
shivanandgowdakr 0:a76236b7a8e6 314
shivanandgowdakr 0:a76236b7a8e6 315 printf("\n Enter node data to be updated : ");
shivanandgowdakr 0:a76236b7a8e6 316 scanf("%d", &data);
shivanandgowdakr 0:a76236b7a8e6 317 printf("\n Enter new data : ");
shivanandgowdakr 0:a76236b7a8e6 318 scanf("%d", &data1);
shivanandgowdakr 0:a76236b7a8e6 319 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 320 if (temp2 == NULL)
shivanandgowdakr 0:a76236b7a8e6 321 {
shivanandgowdakr 0:a76236b7a8e6 322 printf("\n Error : List empty no node to update");
shivanandgowdakr 0:a76236b7a8e6 323 return;
shivanandgowdakr 0:a76236b7a8e6 324 }
shivanandgowdakr 0:a76236b7a8e6 325 while (temp2 != NULL)
shivanandgowdakr 0:a76236b7a8e6 326 {
shivanandgowdakr 0:a76236b7a8e6 327 if (temp2->n == data)
shivanandgowdakr 0:a76236b7a8e6 328 {
shivanandgowdakr 0:a76236b7a8e6 329
shivanandgowdakr 0:a76236b7a8e6 330 temp2->n = data1;
shivanandgowdakr 0:a76236b7a8e6 331 traversebeg();
shivanandgowdakr 0:a76236b7a8e6 332 return;
shivanandgowdakr 0:a76236b7a8e6 333 }
shivanandgowdakr 0:a76236b7a8e6 334 else
shivanandgowdakr 0:a76236b7a8e6 335 temp2 = temp2->next;
shivanandgowdakr 0:a76236b7a8e6 336 }
shivanandgowdakr 0:a76236b7a8e6 337
shivanandgowdakr 0:a76236b7a8e6 338 printf("\n Error : %d not found in list to update", data);
shivanandgowdakr 0:a76236b7a8e6 339 }
shivanandgowdakr 0:a76236b7a8e6 340
shivanandgowdakr 0:a76236b7a8e6 341 /* To sort the linked list */
shivanandgowdakr 0:a76236b7a8e6 342 void sort()
shivanandgowdakr 0:a76236b7a8e6 343 {
shivanandgowdakr 0:a76236b7a8e6 344 int i, j, x;
shivanandgowdakr 0:a76236b7a8e6 345
shivanandgowdakr 0:a76236b7a8e6 346 temp2 = h;
shivanandgowdakr 0:a76236b7a8e6 347 temp4 = h;
shivanandgowdakr 0:a76236b7a8e6 348
shivanandgowdakr 0:a76236b7a8e6 349 if (temp2 == NULL)
shivanandgowdakr 0:a76236b7a8e6 350 {
shivanandgowdakr 0:a76236b7a8e6 351 printf("\n List empty to sort");
shivanandgowdakr 0:a76236b7a8e6 352 return;
shivanandgowdakr 0:a76236b7a8e6 353 }
shivanandgowdakr 0:a76236b7a8e6 354
shivanandgowdakr 0:a76236b7a8e6 355 for (temp2 = h; temp2 != NULL; temp2 = temp2->next)
shivanandgowdakr 0:a76236b7a8e6 356 {
shivanandgowdakr 0:a76236b7a8e6 357 for (temp4 = temp2->next; temp4 != NULL; temp4 = temp4->next)
shivanandgowdakr 0:a76236b7a8e6 358 {
shivanandgowdakr 0:a76236b7a8e6 359 if (temp2->n > temp4->n)
shivanandgowdakr 0:a76236b7a8e6 360 {
shivanandgowdakr 0:a76236b7a8e6 361 x = temp2->n;
shivanandgowdakr 0:a76236b7a8e6 362 temp2->n = temp4->n;
shivanandgowdakr 0:a76236b7a8e6 363 temp4->n = x;
shivanandgowdakr 0:a76236b7a8e6 364 }
shivanandgowdakr 0:a76236b7a8e6 365 }
shivanandgowdakr 0:a76236b7a8e6 366 }
shivanandgowdakr 0:a76236b7a8e6 367 traversebeg();
shivanandgowdakr 0:a76236b7a8e6 368 }