Originally Posted by
Mentallic
Well, each node in my linked list is a line of text, and I'm required to - depending on user input - print out either a specific line number (hence the int lineNumber) or also if they input '+' or '-' to print out the next/previous line respectively.
Here are some possibilities.
Use negative line numbers as special codes:
Code:
#define CMD_NEXT -1
#define CMD_PREV -2
void print(Line *head, int lineNumber) {
switch (lineNumber) {
case CMD_NEXT:
// print next line
break;
case CMD_PREV:
// print prev line
break;
default:
if (lineNumber > 0) // or >= 0
// print line lineNumber
else
// error
}
}
// calls
print(line, 20); // print line 20
print(line, CMD_NEXT); // print next line
print(line, CMD_PREV); // print prev line
Use an extra parameter:
Code:
void print(Line *head, char command, int lineNumber) {
switch (command) {
case 'N':
// print next line
break;
case 'P':
// print prev line
break;
case 'L':
// print line lineNumber
break;
default:
// error
}
}
// calls
print(line, 'L', 20); // print line 20
print(line, 'N', 0); // print next line
print(line, 'P', 0); // print prev line
Use a string:
Code:
void print(Line *head, char *command) {
int lineNumber;
switch (command[0]) {
case 'N':
// print next line
break;
case 'P':
// print prev line
break;
case 'L':
// print line lineNumber
lineNumber = atoi(command + 1);
break;
default:
// error
}
}
// calls
print(line, "L20"); // print line 20
print(line, "N"); // print next line
print(line, "P"); // print prev line