This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
notes:data:fall2023:projects:ttb1 [2023/09/15 20:38] – [NODE POINTER] walley | notes:data:fall2023:projects:ttb1 [2023/09/16 20:50] (current) – [REMOVING A NODE FROM THE LIST] jwieland | ||
---|---|---|---|
Line 23: | Line 23: | ||
To create these pointers, we set them to the type of our brick structure. That way, after dereferencing the pointer, we'll be able to access any of the variables we assign inside our struct. The code looks like: | To create these pointers, we set them to the type of our brick structure. That way, after dereferencing the pointer, we'll be able to access any of the variables we assign inside our struct. The code looks like: | ||
<code C> | <code C> | ||
+ | BrickNode* start; | ||
+ | BrickNode* temp; | ||
</ | </ | ||
=====MALLOC A NODE===== | =====MALLOC A NODE===== | ||
Line 49: | Line 50: | ||
<code C> | <code C> | ||
=====TRAVERSING LIST===== | =====TRAVERSING LIST===== | ||
+ | In a singly-linked list, we can only move in one direction through the list — forward. To move through the list, we need to move our temp pointer to instead point to the next item within the list. This is where our next pointer within our '' | ||
+ | If your list is set up properly, ``temp-> | ||
+ | <code C>temp = temp-> | ||
+ | <color # | ||
=====INSERTING NODE INTO LIST===== | =====INSERTING NODE INTO LIST===== | ||
Line 64: | Line 69: | ||
=====REMOVING A NODE FROM THE LIST===== | =====REMOVING A NODE FROM THE LIST===== | ||
+ | One of the ways to delete a specific Node from a linked list is to create a function that searches for the node by its properties (e.g. x, and y) and then removes it. The psudo-code would look something like this. | ||
+ | |||
+ | <code c> | ||
+ | deleteNode(Node** start-of-list, | ||
+ | Node* current =*start-of-list; | ||
+ | Node* previous= NULL; | ||
+ | while(current!=NULL){ | ||
+ | if (current_node-> | ||
+ | if(previous==NULL){ | ||
+ | //node we want to delete from the list is the first node in the list | ||
+ | *start-of-list =current-> | ||
+ | } else{ | ||
+ | //set the previous node's pointer to the current node's pointer | ||
+ | } | ||
+ | free(current) | ||
+ | return; | ||
+ | } | ||
+ | //itterate to next brick | ||
+ | previous= current; | ||
+ | current=current-> | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | In essence we are itterating through the different nodes, and checking if they are the node we want to delete. Make sure to have a catch case for the first node in the list. | ||
====AT THE START OF LIST==== | ====AT THE START OF LIST==== | ||