This website is a resource for myself and other coders who discover it.

Here I save  articles and source code that I have written during various projects.

Enjoy!

Resume:

B. Kyle Turley

  • 23 years old.
  • Engaged to the lovely Lindsey Seifried, Wedding date 5/29/2010.
  • Junior in the Computer Science program + minor in mathematics at Southern Illinois University Edwardsville.
  • Owner of Clicks Online Design.
  • My hobbies include vegetable gardening, guitar picking, and forcing computers to do my bidding.

    email me –  kyle@kturley.com

    This code is an implementation and test driver of a doubly linked list. This list is pointer based and uses dynamic memory.

    
    Sorted Doubly Linked List with Insertion and Deletion
    
    #include <iostream>
    #include <cstdlib>
    #include <string>
    using namespace std;
    
    class Dllist
    {
     private:
     typedef struct Node
     {
     string name;
     Node* next;
     Node* prev;
     };
     Node* head;
     Node* last;
     public:
     Dllist()
     {
     head = NULL;
     last = NULL;
     }
     bool empty() const { return head==NULL; }
     friend ostream& operator<<(ostream& ,const Dllist& );
     void Insert(const string& );
     void Remove(const string& );
    };
    
    void Dllist::Insert(const string& s)
    {
     // Insertion into an Empty List.
     if(empty())
     {
     Node* temp = new Node;
     head = temp;
     last = temp;
     temp->prev = NULL;
     temp->next = NULL;
     temp->name = s;
     }
     else
     {
     Node* curr;
     curr = head;
     while( s>curr->name && curr->next != last->next) curr = curr->next;
    
     if(curr == head)
     {
     Node* temp = new Node;
     temp->name = s;
     temp->prev = curr;
     temp->next = NULL;
     head->next = temp;
     last = temp;
     //  cout<<" Inserted "<<s<<" After "<<curr->name<<endl;
     }
     else
     {
     if(curr == last && s>last->name)
     {
     last->next = new Node;
     (last->next)->prev = last;
     last = last->next;
     last->next = NULL;
     last->name = s;
     //  cout<<" Added "<<s<<" at the end "<<endl;
     }
     else
     {
     Node* temp = new Node;
     temp->name = s;
     temp->next = curr;
     (curr->prev)->next = temp;
     temp->prev = curr->prev;
     curr->prev = temp;
     //  cout<<" Inserted "<<s<<" Before "<<curr->name<<endl;
     }
     }
     }
    }
    
    ostream& operator<<(ostream& ostr, const Dllist& dl )
    {
     if(dl.empty()) ostr<<" The list is empty. "<<endl;
     else
     {
     Dllist::Node* curr;
     for(curr = dl.head; curr != dl.last->next; curr=curr->next)
     ostr<<curr->name<<" ";
     ostr<<endl;
     ostr<<endl;
     return ostr;
     }
    }
    
    void Dllist::Remove(const string& s)
    {
     bool found = false;
     if(empty())
     {
     cout<<" This is an empty list! "<<endl;
     return;
     }
     else
     {
     Node* curr;
     for(curr = head; curr != last->next; curr = curr->next)
     {
     if(curr->name == s)
     {
     found = true;
     break;
     }
     }
     if(found == false)
     {
     cout<<" The list does not contain specified Node"<<endl;
     return;
     }
     else
     {
     // Curr points to the node to be removed.
     if (curr == head && found)
     {
     if(curr->next != NULL)
     {
     head = curr->next;
     delete curr;
     return;
     }
     else
     {
     delete curr;
     head = NULL;
     last = NULL;
     return;
     }
     }
     if (curr == last && found)
     {
     last = curr->prev;
     delete curr;
     return;
     }
     (curr->prev)->next = curr->next;
     (curr->next)->prev = curr->prev;
     delete curr;
     }
     }
    }
    
    int main()
    {
     Dllist d1;
     int ch;
     string temp;
     while(1)
     {
     cout<<endl;
     cout<<" Doubly Linked List Operations "<<endl;
     cout<<" ------------------------------"<<endl;
     cout<<" 1. Insertion "<<endl;
     cout<<" 2. Deletion "<<endl;
     cout<<" 3. Display "<<endl;
     cout<<" 4. Exit "<<endl;
     cout<<" Enter your choice : ";
     cin>>ch;
     switch(ch)
     {
     case 1: cout<<" Enter Name to be inserted : ";
     cin>>temp;
     d1.Insert(temp);
     break;
     case 2: cout<<" Enter Name to be deleted : ";
     cin>>temp;
     d1.Remove(temp);
     break;
     case 3: cout<<" The List contains : ";
     cout<<d1;
     break;
     case 4: system("pause");
     return 0;
     break;
     }
     }
    

    This code is a simple example of how to safely open a text file in C++. Notice the very important check that the file was opened correctly. This covers a range of errors,  most commonly file not found.

    
    // Read integers from file and print sum.
    
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main() {
     int sum = 0;
     string word;
     ifstream inFile;
    
     inFile.open("test.txt");
     if (!inFile) {
     cout << "Unable to open file";
     exit(1); // terminate with error
     }
    
     while (inFile >> word) {
     cout << word << " ";
     }
    
     inFile.close();
    
     return 0;
    }
    

    this snippet of code is an alternative to system(“pause”) in MS Visual Studio.

    /*
    * File:   SystemPause.cpp
    * Author: B Turley
    *
    * This function can be used as a substitute for 'system("pause")'
    * in Microsoft Visual Studio
    *
    * Created on November 10, 2009, 1:17 AM
    */
    
    #include &lt;iostream&gt;
    #include &lt;limits&gt;
    using namespace std;
    
    void pause()
    {
    cout&lt;&lt;"Press any key to Continue...";
    cin.sync();
    cin.ignore(numeric_limits&lt;streamsize&gt; ::max(), '\n');
    }
    
    int main(int argc, char** argv) {
    
    pause();
    
    return (0);
    }
    

    This little piece of code can convert a string of decimal characters into an integer value.  If you seek to convert a string into a double, see this post.

    /*
     * A function to convert a string into an integer
     */
    
    #include &lt;string&gt;
    
    int StringToInt (std::string str)
    {
        int total = 0;
        int length = str.length(); // the length of the string
        int x = 1; // this is our multiplier, used to convert each digit into tens, units, etc
        for (int i = 1; i &lt; str.length(); i++)
            x *= 10; // initialise x correctly
    
        for (int i = 0; i &lt; length; i++)
        { // loop through the string
            // 48 is the base value (ASCII)
            // multiply it by x to get it into tens, units, etc
            total += (static_cast &lt;int&gt; (str[i]) - 48) * x;
            x /= 10; // divide x by 10, to reduce the units by one
        }
    
        return total; // return the value as an integer
    }
    
    /** EXAMPLE USAGE **/
    #include &lt;iostream&gt;
    int main ()
    {
        int t = StringToInt("1234") + 300;
        std::cout &lt; &lt; t; // should be 1534 (1234 + 300 = 1534)
    
        std::cin.get ();
        return EXIT_SUCCESS;
    }