This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
haas:spring2015:data:projects:sll1 [2014/10/16 20:21] – external edit 127.0.0.1 | haas:spring2015:data:projects:sll1 [2015/03/10 12:28] (current) – [list library] wedge | ||
---|---|---|---|
Line 11: | Line 11: | ||
This section will document any updates applied to the project since original release: | This section will document any updates applied to the project since original release: | ||
- | * __revision | + | * __revision |
=====Objective===== | =====Objective===== | ||
- | We've commenced on our list explorations, | + | We've commenced on our list explorations, |
- | In this project, we continue our list implementation by exploring the removal | + | In this project, we continue our list implementation by exploring the appending |
=====Project Overview===== | =====Project Overview===== | ||
Line 26: | Line 26: | ||
<code c> | <code c> | ||
- | Node *searchlist(List *, int); // locate | + | List *append(List *, Node *, Node *); |
- | List *obtain | + | Node *searchlist(List *, int); // is there a node containing value in list? |
- | List *rmlist(List *); // | + | List *cplist(List *); // |
- | List *swapnode(List *, Node *, Node *); // swap positions of given nodes in list | + | void displayb(List *, int); // display list backwards |
+ | int compare(List *, List *); // compare two lists for equality | ||
</ | </ | ||
- | As a suggestion, I'd recommend implementing them in the order listed above, starting with **searchlist()** and then **obtain()**. By doing this, you get to review a bit from the previous weeks (**searchlist()**) and then continue with base functionality | + | As a suggestion, I'd recommend implementing them in the order listed above, starting with **append()** and then **searchlist()**. By doing this, you get to review a bit from the previous weeks before you continue with base functionality, |
An important perspective to keep when implementing these list functions is to be mindful of what functionality can be a unit of something else. Do not reinvent the wheel- utilize functions you've written- it will shorten your code, and reduce the chance of error. Plus, that IS the intent.. to have each function be specific and focused on its particular task; to do one thing, and do that one thing extremely well. We can then use them as base units to build more sophisticated functionality. | An important perspective to keep when implementing these list functions is to be mindful of what functionality can be a unit of something else. Do not reinvent the wheel- utilize functions you've written- it will shorten your code, and reduce the chance of error. Plus, that IS the intent.. to have each function be specific and focused on its particular task; to do one thing, and do that one thing extremely well. We can then use them as base units to build more sophisticated functionality. | ||
- | In this project, **searchlist()** and **obtain()** are those basic operations, where **rmlist()** and **swapnode()** can be build using various | + | In this project, **append()** can be considered that basic operation, where **cplist()** can be built using **append()** (along with any other list/ |
====list library==== | ====list library==== | ||
- | In **src/ | + | In **src/ |
- | * **obtain.c** - which will house the list obtain | + | * **append.c** - which will house the append |
- | * **rm.c** - which will handle clearing | + | * **cp.c** - which will house the list copy function |
* **search.c** | * **search.c** | ||
- | * **swap.c** | + | * **displayb.c** - which will handle |
+ | * **compare.c** | ||
- | Take a look at the code there. These are the files that contain functions which will be compiled and archived into the node library (**liblist.a**) we will be using in this and future projects. | + | Take a look at the code there. These are the files that contain functions which will be compiled and archived into the list library (**liblist.a**) we will be using in this and future projects. |
Figure out what is going on, make sure you understand it. | Figure out what is going on, make sure you understand it. | ||
Line 57: | Line 60: | ||
In **testing/ | In **testing/ | ||
- | * **unit-rmlist.c** - unit test for **rmlist()** library function | + | * **unit-append.c** - unit test for **append()** library function |
- | * **unit-obtain.c** - unit test for **obtain()** library function | + | * **unit-cplist.c** - unit test for **cplist()** library function |
* **unit-searchlist.c** - unit test for **searchlist()** library function | * **unit-searchlist.c** - unit test for **searchlist()** library function | ||
- | * **unit-swapnode.c** - unit test for **swapnode()** library function | + | * **unit-displayb.c** - unit test for **displayb()** library function |
+ | * **unit-compare.c** | ||
These are complete runnable programs (when compiled, and linked against the list library, which is all handled for you by the **Makefile** system in place). | These are complete runnable programs (when compiled, and linked against the list library, which is all handled for you by the **Makefile** system in place). | ||
Line 75: | Line 79: | ||
* make sure you understand what is going on | * make sure you understand what is going on | ||
* ask questions to get clarification! | * ask questions to get clarification! | ||
+ | |||
+ | =====Expected Results===== | ||
+ | To assist you in verifying a correct implementation, | ||
+ | |||
+ | ====node library==== | ||
+ | Here is what you should get for the node library: | ||
+ | |||
+ | <cli> | ||
+ | lab46: | ||
+ | ==================================================== | ||
+ | = Verifying Singly-Linked Node Functionality | ||
+ | ==================================================== | ||
+ | | ||
+ | | ||
+ | | ||
+ | ==================================================== | ||
+ | [RESULTS] Total: | ||
+ | ==================================================== | ||
+ | lab46: | ||
+ | </ | ||
+ | |||
+ | ====list library (so far)==== | ||
+ | Here is what you should get for all the functions completed so far in the list library (sll0+sll1): | ||
+ | |||
+ | <cli> | ||
+ | lab46: | ||
+ | ====================================================== | ||
+ | = | ||
+ | ====================================================== | ||
+ | [mklist] Total: | ||
+ | [insert] Total: | ||
+ | [displayf] Total: | ||
+ | [getpos] Total: | ||
+ | [setpos] Total: | ||
+ | [append] Total: | ||
+ | [searchlist] Total: | ||
+ | [cplist] Total: | ||
+ | [displayb] Total: | ||
+ | | ||
+ | ====================================================== | ||
+ | | ||
+ | ====================================================== | ||
+ | lab46: | ||
+ | </ | ||
=====Submission Criteria===== | =====Submission Criteria===== | ||
To be successful in this project, the following criteria must be met: | To be successful in this project, the following criteria must be met: | ||
- | * Code must compile cleanly (no warnings or errors) | + | * Project must be submit on time, by the posted deadline. |
+ | * Late submissions will lose 25% credit per day, with the submission window closing on the 4th day following the deadline. | ||
+ | * All code must compile cleanly (no warnings or errors) | ||
* all requested functions must be implemented in the related library | * all requested functions must be implemented in the related library | ||
+ | * all requested functionality must conform to stated requirements (either on this project page or in comment banner in source code files themselves). | ||
* Executed programs must display in a manner similar to provided output | * Executed programs must display in a manner similar to provided output | ||
+ | * output formatted, where applicable, must match that of project requirements | ||
* Processing must be correct based on input given and output requested | * Processing must be correct based on input given and output requested | ||
- | * Output must be correct | + | * Output, if applicable, |
* Code must be nicely and consistently indented (you may use the **indent** tool) | * Code must be nicely and consistently indented (you may use the **indent** tool) | ||
* Code must be commented | * Code must be commented | ||
+ | * Any "to be implemented" | ||
+ | * these "to be implemented" | ||
+ | * Sufficient comments explaining the point of provided logic **MUST** be present | ||
+ | * Any and all functions written must have, **at most**, 1 **return** statement | ||
+ | * points will be lost for solutions containing multiple return statements in a function. | ||
* Track/ | * Track/ | ||
* Submit a copy of your source code to me using the **submit** tool (**make submit** will do this) by the deadline. | * Submit a copy of your source code to me using the **submit** tool (**make submit** will do this) by the deadline. |