| | |
Nested Linked List Class?
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Oct 2007
Posts: 34
Reputation:
Solved Threads: 0
Hi guys,
I need a help on my assignment.
Background
A data transmission system typically breaks a large message into smaller packets. In some
systems, the packets can arrive at the destination computer out of order, so that before the
application requesting the data can process it, the communications program must ensure that
the message is assembled in its proper form.
For this program, the data packets will be read from a file. Each packet will contain the
following fields, separated by colons:
Message ID number. This will always contain either 3 digits or the word END.
Packet sequence number. This will consist of exactly three digits.
Text. No text line will exceed ninety characters. The text may contain any characters,
including colons.
Some examples of packets are:
101:021:"Greetings, earthlings, I have come to rule you!"
232:013:Hello, Mother, I can't talk right now,
101:017:Here is a message from an important visitor:
232:015:I am being harangued by a little green thingy.
END
All packets with a particular ID number belong to a single message. Sequence numbers may
not be contiguous, but the correct ordering for a message will always be in ascending order of
sequence numbers.
To simplify the task, it can be assumed:
All messages will be complete: each message will have at least one data packet.
Each packet will have a unique sequence number: a sequence number will not be used
again for a subsequent packet.
The END packet will always be the last packet received: this means you do not have to
know the number of packets in a message, or wait for pending packets once an END
packet has arrived.
All message IDs and sequence numbers will be correct: you do not have to check
messages for valid characters, etc.
Packets will be contained in a file. Each line of the file will contain one packet, but as
indicated above, the packets will be in random order (except for the END packet). There
will be no blank lines.
Program Action
1. Your program will get the name of the file containing the packets as a command line
argument.
2. It will then read the file and build up all the messages in a linked list of linked lists using
the fgets function. For each message ID, you should maintain a linked list of packets
received, and each new packet for the message should be inserted into the linked list in
the correct place, so the list is always correctly sorted.
3. When the END packet is received, all the messages should be printed, one packet to a
line, in correct order, with a header giving the 3 digit message ID. The message ID should
be padded with 0’s if it is numerically less than 100. A blank line will separate out each
message ID.
4. As a final step, the program should then correctly free up all the memory used in the
linked lists.
For example, the output of the message above would look like
Message 101
Here is a message from an important visitor:
"Greetings, earthlings, I have come to rule you!"
Message 232
Hello, Mother, I can't talk right now,
I am being harangued by a little green thingy.
Those are the requirements of what the program should do...
Above is the template/skeleton given by professor.
Eventually, the changeCase function need to be changed since it's only an example.
I understand this step:
1. Your program will get the name of the file containing the packets as a command line argument.
But now I'm stuck with:
2. It will then read the file and build up all the messages in a linked list of linked lists using
the fgets function. For each message ID, you should maintain a linked list of packets
received, and each new packet for the message should be inserted into the linked list in
the correct place, so the list is always correctly sorted.
i'm confused, how to build up message in linked list of linked list?
Professor said, there will be at least 2 classes: one class for message and another one for packets.
What does these classes do actually? are they linked list class? and how to structure the classes?
I need a help on my assignment.
Background
A data transmission system typically breaks a large message into smaller packets. In some
systems, the packets can arrive at the destination computer out of order, so that before the
application requesting the data can process it, the communications program must ensure that
the message is assembled in its proper form.
For this program, the data packets will be read from a file. Each packet will contain the
following fields, separated by colons:
Message ID number. This will always contain either 3 digits or the word END.
Packet sequence number. This will consist of exactly three digits.
Text. No text line will exceed ninety characters. The text may contain any characters,
including colons.
Some examples of packets are:
101:021:"Greetings, earthlings, I have come to rule you!"
232:013:Hello, Mother, I can't talk right now,
101:017:Here is a message from an important visitor:
232:015:I am being harangued by a little green thingy.
END
All packets with a particular ID number belong to a single message. Sequence numbers may
not be contiguous, but the correct ordering for a message will always be in ascending order of
sequence numbers.
To simplify the task, it can be assumed:
All messages will be complete: each message will have at least one data packet.
Each packet will have a unique sequence number: a sequence number will not be used
again for a subsequent packet.
The END packet will always be the last packet received: this means you do not have to
know the number of packets in a message, or wait for pending packets once an END
packet has arrived.
All message IDs and sequence numbers will be correct: you do not have to check
messages for valid characters, etc.
Packets will be contained in a file. Each line of the file will contain one packet, but as
indicated above, the packets will be in random order (except for the END packet). There
will be no blank lines.
Program Action
1. Your program will get the name of the file containing the packets as a command line
argument.
2. It will then read the file and build up all the messages in a linked list of linked lists using
the fgets function. For each message ID, you should maintain a linked list of packets
received, and each new packet for the message should be inserted into the linked list in
the correct place, so the list is always correctly sorted.
3. When the END packet is received, all the messages should be printed, one packet to a
line, in correct order, with a header giving the 3 digit message ID. The message ID should
be padded with 0’s if it is numerically less than 100. A blank line will separate out each
message ID.
4. As a final step, the program should then correctly free up all the memory used in the
linked lists.
For example, the output of the message above would look like
Message 101
Here is a message from an important visitor:
"Greetings, earthlings, I have come to rule you!"
Message 232
Hello, Mother, I can't talk right now,
I am being harangued by a little green thingy.
Those are the requirements of what the program should do...
c++ Syntax (Toggle Plain Text)
#include <iostream> #include <list> #include <ctype.h> using namespace std; void printList(const list<char> &myList); void fillList(list<char> &myList, const string &vowels); void changeCase(list <char> &myList); int main (int argc, char *argv[]) { string vowels = "aeiou"; list<char> myList; fillList(myList, vowels); printList(myList); changeCase(myList); printList(myList); return 0; } void printList(const list<char> &myList) { list<char>::const_iterator itr; for (itr = myList.begin(); itr != myList.end(); itr++ ) { cout << ' ' << *itr; } cout << '\n'; } void fillList(list<char> &myList, const string &vowels) { for (int i = 0; i<vowels.length(); i++) { myList.push_back(vowels[i]); } } void changeCase(list <char> &myList) { list<char>::iterator itr; for (itr = myList.begin(); itr != myList.end(); itr++ ) { if (islower(*itr)) *itr = toupper(*itr); else *itr = toupper(*itr); } }
Above is the template/skeleton given by professor.
Eventually, the changeCase function need to be changed since it's only an example.
I understand this step:
1. Your program will get the name of the file containing the packets as a command line argument.
But now I'm stuck with:
2. It will then read the file and build up all the messages in a linked list of linked lists using
the fgets function. For each message ID, you should maintain a linked list of packets
received, and each new packet for the message should be inserted into the linked list in
the correct place, so the list is always correctly sorted.
i'm confused, how to build up message in linked list of linked list?
Professor said, there will be at least 2 classes: one class for message and another one for packets.
What does these classes do actually? are they linked list class? and how to structure the classes?
Try to explain this object model sceleton improvisation: 

C++ Syntax (Toggle Plain Text)
class Packet { public: ... bool parseLine(const char* pline); bool parseLine(const string& line) { return parseLine(line.c_str()); } int getId() const { return messageId; } int getNumber() const { return myNumber; } string& getBody() { return body; } const string& getBody() const { return body; } bool isOK() const; void clear(); ... protected: int messageId; int myNumber; string body; }; ostream& operator <<(ostream& os, const Packet&); class Message { public: ... bool addPacket(const Packet&); bool isOK() const; void print(ostream& os = cout); void clear(); ... protected: int myId; list<Packet> packets; ... }; class AllInOne { public: ... bool addPacket(const Packet&); void print(ostream& os = cout); void clear(); ... protected: list<Message> messages; ... };
![]() |
Similar Threads
- Please help w/ compile errors (C++)
- Linked Lists in multiple classes (C++)
- ClassTemplate With LinkedList?? (C++)
- Nested template class (C)
Other Threads in the C++ Forum
- Previous Thread: Need help with functions
- Next Thread: Reading from file character wise into buffer
| Thread Tools | Search this Thread |
Tag cloud for C++
6 api array arrays based beginner binary bmp c++ c/c++ calculator char class classes code compile compiler console conversion convert count data delete deploy dll download dynamic dynamiccharacterarray encryption error file format forms fstream function functions game givemetehcodez google graph gui homeworkhelp iamthwee ifstream input int java lib library linkedlist linker list loop looping loops map math matrix memory microsoft newbie news number output pointer problem program programming project python random read recursion recursive reference rpg simple string strings system temperature template templates test text text-file tree unix url variable vector video visual visualstudio void win32 windows winsock wordfrequency wxwidgets






