Sponsored Content
Top Forums Programming Linear linked list node delete Post 302444442 by Praveen_218 on Thursday 12th of August 2010 12:35:55 AM
Old 08-12-2010
Quote:
Originally Posted by tene
Always check whether N+1 node is Null before doing any logic.
Even though you know that N+1 == NULL; what you can do in the same algorithm to protect node pointer at (N - 1) from becoming a dangling pointer ?

Apart how would your function written besed on that algorithm would ever know that N == 1; and how you would protect the list-pointer pointing to the first node from becoming dangling?

A similar algorithm holds trure in binary tree node deletion; wherein the data is copied from the leaf node which is located on the branch one move either left or right of the node to be deleted logically and the actual deletion happens at the leaf node whose data is copied. This alters the data organisation but preserves the properties of the tree.

But moreover this worked there because of the deletion always happen at the leaf node and is travelled (this travel is missing in your algorithm) to be found via the entire branch and while the travel you pass through the second last node whose pointer you get and this node doesn't become a dangling one.

The TRAVEL is important.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

List linked files

A perl script that displays the list of files which have multiple links..! ls -l shows number of links in a field. (0 Replies)
Discussion started by: aadi_uni
0 Replies

2. Programming

linked list node with pointer to struct

Suppose to have: struct Tstudent { string name, surname; int matriculation_num; }; struct Tnode { Tstudent* student; Tnodo* next; } L;I want to deference that "student" pointer. For example, I tried with: *(L->student).matriculation_numbut it not worked, as terminal... (4 Replies)
Discussion started by: Luke Bonham
4 Replies

3. Programming

I need C++ Code for single linked list

I need C++ Code for single linked list With operations as 1)insert at any position 2)delete any 3)change the data of any position (2 Replies)
Discussion started by: girija
2 Replies

4. Programming

c++ function to convert a linear list to circular list

hi all, i need a c++ function which converts a linear list to circular. presently i am working with two files. i.e., one linear list file. and one circular list file to do some operations. i thought it will be helpful if there is a function that converts a linear list to circular n undo the... (1 Reply)
Discussion started by: vidyaj
1 Replies

5. Programming

Help with linked list in C

i have this code typedef struct client_list { char *client_name; struct client_list * next; int client_socket_fd; } client; client *current, *head; head = NULL; char *h="test"; add_client(current, h, head, &client_socket_fd); ... (24 Replies)
Discussion started by: omega666
24 Replies

6. Programming

how do edit a node in a singly linked list in C?

If i have a linked list in C, how do I edit a node in it? Without ruining the whole list, by this i mean end up making it null or circular... (since it has to be linear and has to stop somewhere):wall: Can some one provide an example, making it have like 5 nodes, and then edit a string of the... (3 Replies)
Discussion started by: omega666
3 Replies

7. UNIX for Advanced & Expert Users

Unix linked-list placement

Hi, I am programming in kernel, and I want to use a double linked list that holds infos that every process could access and modify THIS list. So, I suppose it is a 'global' variable since every process(thread) can reach it, I am wondering where to put it? by changing some of the kernel files? (1 Reply)
Discussion started by: louisTan
1 Replies

8. Programming

Help with linked list.

#include<stdio.h> #include<stdlib.h> struct LinkedList { int val; struct LinkedList *next; }node; /*Creating a structure variable*/ typedef struct LinkedList Node; Node *start = NULL; int create(int i) { Node *temp = NULL; if (start == NULL) ... (5 Replies)
Discussion started by: prinsh
5 Replies

9. Programming

How to delete the last node in a linked list.?

How to delete the last node in a single linked list given only the pointer to last node ? Head node will not be given. (5 Replies)
Discussion started by: VSSajjan
5 Replies

10. Programming

How to reverse a linked list by traversing only once.?

Program to reverse a linked list by traversing only once. (1 Reply)
Discussion started by: VSSajjan
1 Replies
UList(3U)						    InterViews Reference Manual 						 UList(3U)

NAME
UList - circular, doubly-linked list class SYNOPSIS
#include <Unidraw/ulist.h> DESCRIPTION
UList implements a circular, doubly-linked list. The sentinel and each entry in the list are instances of the UList class, each containing a void pointer to the data they contain as well as pointers to the next and previous UList instance in the list. The sentinel UList instance is considered to represent the list. PUBLIC OPERATIONS
UList(void* = nil) Create a new UList instance, optionally supplying the value for the void pointer it stores. virtual ~UList() Delete the entire list. Normally the sentinel, which represents the list, is the entry that is deleted explicitly. Note that the data on the list, stored as void*'s, cannot be deleted in this manner. void Append(UList*) void Prepend(UList*) When performed on the sentinel, Append appends an element to the end of the list and Prepend prepends it to the beginning of the list. When performed on a UList instance other than the sentinel, Append has the effect of inserting its argument before the instance, while Prepend has the effect of inserting it after the instance. void Remove(UList*) Unlink the specified UList instance from the list it is in. The object on which this operation is called is irrelevant. void Delete(void*) Find the UList instance in this list containing the given void pointer, remove it from the list it is in, and delete it. UList* Find(void*) Return the UList instance in this list containing the given void pointer. UList* First() UList* Last() UList* End() UList* Next() UList* Prev() Return various UList instance in the list relative to this, i.e., as if it were the sentinel. End returns the sentinel (this) and is useful for detecting the end of an iteration through the list; the other operations are self-explanatory. boolean IsEmpty() Return whether or not the list has any elements. void* operator()() Return the void pointer that the UList stores. UList* operator[](int i) Return the ith UList in the list, where the next element is the first, etc. Unidraw 3 October 1990 UList(3U)
All times are GMT -4. The time now is 06:08 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy