[ create a new paste ] login | about

Link: http://codepad.org/KeRMCyoU    [ raw code | output | fork ]

C++, pasted on Oct 16:
#include <stdio.h>
#include <stdlib.h>

struct Node
{
    char CharContent;
    struct Node * NextNodePointer;
};
typedef struct Node Node;


Node * CreateNewNode(char ch);
Node * AddNode(Node * start, Node * newNode);
void DeleteTailNode(Node ** start);
void PrintAllNodes(Node * start);


int main()
{
    Node * start = NULL;
    Node * newNode = NULL;

    start = AddNode(start, CreateNewNode('A'));
    start = AddNode(start, CreateNewNode('B'));
    start = AddNode(start, CreateNewNode('C'));
    start = AddNode(start, CreateNewNode('D'));
    PrintAllNodes(start);

    DeleteTailNode(&start);
    PrintAllNodes(start);
    DeleteTailNode(&start);
    PrintAllNodes(start);
    DeleteTailNode(&start);
    PrintAllNodes(start);
    DeleteTailNode(&start);
    PrintAllNodes(start);
   
}


Node * CreateNewNode(char ch)
{
    struct Node * newNode = (struct Node *) malloc(sizeof(struct Node));

    newNode->CharContent = ch;
    newNode->NextNodePointer = NULL;

    return newNode;
}



Node * AddNode(Node * start, Node * newNode)
{
    Node * copyOfStart = start;

    if(start == NULL)
    {
        return newNode;
    }
    else
    {
        while(copyOfStart->NextNodePointer != NULL)
        {
            copyOfStart = copyOfStart->NextNodePointer;
        }

        copyOfStart->NextNodePointer = newNode;

        return start;
    }
}



void DeleteTailNode(Node **start)
{
    Node * prev = NULL;
    Node * current = *start;
    
	

            while(current!=NULL && current->NextNodePointer != NULL)
            {
               prev = current;
               current = current->NextNodePointer;
			}

            free (current);

            if (prev != NULL)
            {
                prev->NextNodePointer = NULL;
            }
			if (prev == NULL && *start!= NULL)
				*start = NULL;
}



void PrintAllNodes(Node * start)
{
    struct Node * tempRoot = start;
	while(tempRoot != NULL)
    {
        printf("%c, ", tempRoot->CharContent);

        tempRoot = tempRoot->NextNodePointer;
    }

    printf("\n");
}


Output:
1
2
3
4
5
A, B, C, D, 
A, B, C, 
A, B, 
A, 



Create a new paste based on this one


Comments: