SE250:lab-4:asin185: Difference between revisions
Jump to navigation
Jump to search
m 12 revision(s) |
(No difference)
|
Latest revision as of 05:19, 3 November 2008
Lab 4
Intro
In this lab we explored linked list and the differences of their length and size.
length
int length( Cons* list) {
int i;
for ( i = 0; list != nil ; i++) {
list = list->tail;
}
return i;
}
Elements - First,Second,Third,Fourth
element_t first( Cons* list ) {
return list->head;
}
element_t second( Cons* list ) {
int i;
for ( i = 0; i < 1; i++) {
if (list == nil)
return 0;
list = list->tail;
}
return list->head;
}
element_t third( Cons* list ) {
int i;
for ( i = 0; i < 2; i++) {
if (list == nil)
return 0;
list = list->tail;
}
return list->head;
}
element_t fourth( Cons* list ) {
int i;
for ( i = 0; i < 3; i++) {
if (list == nil)
return 0;
list = list->tail;
}
return list->head;
}
Nth Element
element_t nth( int i, Cons* list ) {
for ( ; i > 0; i--) {
if (list == nil)
return 0;
list = list->tail;
}
return list->head;
}
Equal function
int equal( Cons* first, Cons* second ) {
while ( first->head == second->head ) {
if (first->tail == nil && second->tail == nil)
return 1;
first = first->tail;
second = second->tail;
}
return 0;
}
Find function
int equal( Cons* first, Cons* second ) {
while ( first->head == second->head ) {
if (first->tail == nil && second->tail == nil)
return 1;
first = first->tail;
second = second->tail;
}
return 0;
}
Copy list function
Cons* copy_list( Cons* list ) {
Cons* copied = nil;
int size = length(list);
int i;
for ( i = 1; i < size + 1 ; i++ ) {
copied = cons(nth(size-i,list), copied);
}
return copied;
}
Append function
Cons* append( Cons* xs, Cons* ys ) {
int size = length(xs);
int i;
for ( i = 1 ; i < size + 1; i++ )
ys = cons( nth( size-i, xs ), ys );
return ys;
}
Nappend function
Cons* nappend( Cons** xs, Cons* ys )
Reverse function
Cons* reverse( Cons* xs ) {
Cons* reversed = nil;
int size = length(xs);
int i = 0;
for ( i = 0 ; i < size; i++ )
reversed = cons( nth( i, xs), reversed );
return reversed;
}