C and Cpp

 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me



Go Back   Tutorialized ForumsDesktop ProgrammingC and Cpp

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Tutorialized Forums Sponsor:
  #1  
Old November 20th, 2008, 09:02 PM
cannsyl cannsyl is offline
Registered User
Tutorialized Newbie (0 - 499 posts)
 
Join Date: Nov 2008
Posts: 1 cannsyl User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 4 m 13 sec
Reputation Power: 0
Linked list problems

Could someone please tell me what is wrong with my code.

Code:
Code:
// poddriver.cpp

//Adapted from Roger Priebe
//CS2308 11/17/08

#include <stdlib.h>
#include <iostream>
#include "bobcatPod.h"

using namespace std;

int main()
{
    
    Song s1("Frank Sinatra", "My way", 14);
    Song s2("Beatles", "Act Naturally", 5);
    Song s3;
    
    BobCatPod p(256);
    BobCatPod q(512);
    BobCatPod r(25);

    cout << "pod p" << endl << p << endl;
    cout << "pod q, size 512 exceeds max, should be reset to 256 " << endl
         << q << endl;
    cout << "pod r, size should be 25 " << endl << r << endl;


    cout << "Song 1" << s1 << endl;
    cout << "Song 2" << s2 << endl;
    cout << "Song 3" << s3 << endl;

    s3.setArtist("Buck Owens");
    s3.setTitle("Act Naturally");
    s3.setSize(20);

    cout << "Song 3 updated " << s3 << endl;
    cout << "Artist 1 (Frank Sinatra)  " << s1.getArtist() << endl;
    cout << "Title 2 (Act Naturally)  " << s2.getTitle() << endl;
//    s1.setSize(7);
//    cout << "Size 1 (7) " << s1.getSize() << endl;

//test relational operators

    if (s1 < s3 ) cout << endl << "s1 < s3" << endl;
      else cout << endl << "s1 >= s3" << endl;
    if (s1 == s2) cout << endl << "s1 == s2" << endl;
      else cout << endl << "s1 != s2"  << endl;
    
// test addnode
    cout << "add song 1, size 14 " << r.addSong(s1)  
         << "   memory left = "  << r.getRemainingMemory() <<endl;
    cout << "add song 2, size 5 " << r.addSong(s2) 
          << "   memory left = "  << r.getRemainingMemory() << endl;
    cout << "add song 3, size 20 should fail " << r.addSong(s3) 
         << "   memory left = "  << r.getRemainingMemory() << endl;
  
    s3.setSize(2);
    cout << "Size 3 (2) " << s3.getSize() << endl;
    cout << "add song 3, size 2 should succeed " << r.addSong(s3) 
         << "   memory left = "  << r.getRemainingMemory() << endl;


// test output
    cout << r << endl;

//test delete

    r.removeSong(s1);
    cout << r << endl;
    r.removeSong(s3);
    cout << r << endl;

    cout << "Total Memory"<< r.getTotalMemory() << endl;





    return 0;
}Code:
//song.h
#ifndef SONG_H
#define SONGT_H
#include <stdlib.h>
#include <iostream>
#include <ostream>
#include <string>

using namespace std;


class Song
{
  
   public:
      Song::Song ();
      Song::Song(string , string , int ); // constructor
      void setSize(int s);
      double getSize(); // access or
      void setTitle (string t);
      string getTitle();
      void setArtist (string a);
      string getArtist();
      void addSong (int);
      friend ostream& operator<<(ostream & os, Song & s);
   private:
      string title;    //dynamic allocation
      string artist;
      int size;
};
#endifCode:
// file song.cpp
#include "song.h"
#include "bobcatPod.h"

 ostream & operator << ( ostream & os, Song & s)
 {
      os << s.getTitle();
      os  << s.getArtist();
      return os;
 }
//constructor
Song::Song ()
{
    title=" ";
    artist=" ";
    size = 0;
}
Song::Song(string a, string t, int s) // constructor
{
    size = s;
    title = t;
    
    artist = a ;
    
}
//accessor for name
string Song :: getTitle()
{
      return title;
}
//mutator
void Song :: setTitle (string t)
{
     title = t;
     
}
string Song :: getArtist()
{
      return artist;
}
//mutator
void Song :: setArtist (string a)
{
     artist = a;
     
}
void Song::setSize(int s)
{
    size = s;
}
double Song::getSize()
{
    return size;
}

Code:
#define BOBCATPOD_H

class bobcatPod
{
      private:
              //Declare a structure for the list
              struct SongNode
      {
             Song s;                  //value in this node
             SongNode *next;      //To point to the next node
      };
      SongNode *head;
      
      public:
             //Constructor
             bobcatPod()
                {head = NULL;}
                
             //Destructor
             ~bobcatPod();
             
             //Linked list operations
             void appendNode (Song s);
             int addSong (Song s);
             int removeSong (Song s);
             void showSongList ();
             int getTotalMemory();
             int getRemainingMemory();
};
#endifCode:
#include "song.h"
#include "bobcatPod.h"
void bobcatPod::appendNode (Song num)
{
     SongNode *newNode;   //to point to a new node
     SongNode *nodePtr;   //to move through the list
     //allocate a new node and stor num there.
     newNode = new SongNode;
     newNode->s = num;
     newNode->next = NULL;
     
     //if there are no nodes in the list
     //make newNode the first node
     if (!head)
         head = newNode;
     else     //otherwise, insert newNOde at end
     {
              //initialize nodePtr to head of list
              nodePtr = head;
              
              //find the last node in the list
              while (nodePtr->next)
                 nodePtr = nodePtr->next;
                 
              //insert newNode as the last node.
              nodePtr->next = newNode;
     }
}


int bobcatPod::addSong(Song s)
{
     Song *newSong;     //a new node
     Song *nodePrt;     //to traverse the list
     Song *previousSong = NULL;       //The previous node
     
     // Allocate a new node and stor num there.
     newSong = new Song;
     
     newSong->next = NULL;
     
     
     //If ther are no nodes in the list
     //make newSong the first node
     if (!head)
     {
               head = newSong;
               newSong -> next = NULL;
     }
     else      //Otherwise, insert newSong
     {
               //Position nodePtr at the head of list.
               nodePtr = head;
               //Initialize prefiousSong to NULL.
               previousSong = NULL
               
               //skip all nodes whose value is less than num.
               while (nodePtr != NULL && nodePtr ->value <num)
               {
                     previousSong = nodePtr;
                     nodePtr = nodePtr->next;
               }
               //If the new Song is to be the 1s in the list,
               //insert it before all other nodes.
               if (previousSong ==NULL)
               {
                                head = newSong;
                                newSong ->next = nodePtr;
               }
               else             //Otherwise insert after the previous node.
               {
                                previousSong->next = newSong;
                                newSong-> next = nodePrt;
               }
     }
}

The driver and song files work, but there is something wrong with bobpod files.

Reply With Quote
Reply

Viewing: Tutorialized ForumsDesktop ProgrammingC and Cpp > Linked list problems


Developer Shed Advertisers and Affiliates


Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump


Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 

Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

© 2003-2017 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap