<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-4%3Ashua066</id>
	<title>SE250:lab-4:shua066 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-4%3Ashua066"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-4:shua066&amp;action=history"/>
	<updated>2026-04-29T10:24:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-4:shua066&amp;diff=6223&amp;oldid=prev</id>
		<title>Mark: 21 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-4:shua066&amp;diff=6223&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:38Z</updated>

		<summary type="html">&lt;p&gt;21 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Lab4 =&lt;br /&gt;
This Lab are all about Linked list.&lt;br /&gt;
&lt;br /&gt;
Start code from LL.c&lt;br /&gt;
Use Test code from test-code.c&lt;br /&gt;
&lt;br /&gt;
= task1 =&lt;br /&gt;
use funtion &amp;#039;&amp;#039;&amp;#039;int Length(Cons*)&amp;#039;&amp;#039;&amp;#039; to return the number of elements in the list&lt;br /&gt;
==code==&lt;br /&gt;
 #include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 typedef int element_t;&lt;br /&gt;
 typedef&lt;br /&gt;
 struct Cons {&lt;br /&gt;
   element_t head;&lt;br /&gt;
   struct Cons* tail;&lt;br /&gt;
 } Cons;&lt;br /&gt;
 static Cons NIL = { 0, &amp;amp;NIL };&lt;br /&gt;
 Cons* nil = &amp;amp;NIL;&lt;br /&gt;
 Cons* cons( element_t elt, Cons* tail ) {&lt;br /&gt;
   Cons* cell = malloc( sizeof(Cons) );&lt;br /&gt;
   assert( cell != 0 );&lt;br /&gt;
   cell-&amp;gt;head = elt;&lt;br /&gt;
   cell-&amp;gt;tail = tail;&lt;br /&gt;
   return cell;&lt;br /&gt;
 }&lt;br /&gt;
 int length(Cons* list){&lt;br /&gt;
     int length=0;&lt;br /&gt;
     for (; list!=nil; list=list-&amp;gt;tail){&lt;br /&gt;
        length++;&lt;br /&gt;
     }&lt;br /&gt;
     return length;&lt;br /&gt;
 }&lt;br /&gt;
 int main( ) {&lt;br /&gt;
   print_list( cons(1,cons(2,cons(3,nil))) ); /* expect: List[1,2,3] */&lt;br /&gt;
   assert( length( nil ) == 0 );&lt;br /&gt;
   assert( length( cons(10,cons(20,cons(30,nil))) ) == 3 );&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
for the &amp;#039;&amp;#039;&amp;#039;funtion length&amp;#039;&amp;#039;&amp;#039;  need to check the list not equal to nil and list = list-&amp;gt;tail.&lt;br /&gt;
&lt;br /&gt;
= task2 =&lt;br /&gt;
write functions &amp;#039;&amp;#039;&amp;#039; element_t first(Cons*), element_t second(Cons*), element_t third(Cons*), element_t fourth(Cons*)&amp;#039;&amp;#039;&amp;#039;  that return the element in the named position.&lt;br /&gt;
==code==&lt;br /&gt;
 element_t first(Cons* list){&lt;br /&gt;
     return list-&amp;gt;head;&lt;br /&gt;
 }&lt;br /&gt;
 element_t second(Cons* list){&lt;br /&gt;
     return list-&amp;gt;tail-&amp;gt;head;&lt;br /&gt;
 }&lt;br /&gt;
 element_t third(Cons* list){	&lt;br /&gt;
     return list-&amp;gt;tail-&amp;gt;tail-&amp;gt;head;&lt;br /&gt;
 }&lt;br /&gt;
 element_t fourth(Cons* list){&lt;br /&gt;
    return list-&amp;gt;tail-&amp;gt;tail-&amp;gt;tail-&amp;gt;head;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test code is &lt;br /&gt;
&lt;br /&gt;
   assert( first( nil ) == 0 );&lt;br /&gt;
   assert( first( cons(10,cons(20,nil)) ) == 10 );&lt;br /&gt;
   assert( second( nil ) == 0 );&lt;br /&gt;
   assert( second( cons(10,cons(20,nil)) ) == 20 );&lt;br /&gt;
   assert( third( nil ) == 0 );&lt;br /&gt;
   assert( third( cons(10,cons(20,nil)) ) == 0 );&lt;br /&gt;
   assert( third( cons(10,cons(20,cons(30,nil))) ) == 30 );&lt;br /&gt;
   assert( fourth( nil ) == 0 );&lt;br /&gt;
   assert( fourth( cons(10,cons(20,nil)) ) == 0 );&lt;br /&gt;
   assert( fourth( cons(10,cons(20,cons(30,nil))) ) == 0 );&lt;br /&gt;
   assert( fourth( cons(10,cons(20,cons(30,cons(40,nil)))) ) == 40 );&lt;br /&gt;
&lt;br /&gt;
because the code has &lt;br /&gt;
  static Cons NIL = { 0, &amp;amp;NIL };&lt;br /&gt;
so dont need to check that whether the tail is equal to nil.&lt;br /&gt;
&lt;br /&gt;
= task3 =&lt;br /&gt;
write a funtion &amp;#039;&amp;#039;&amp;#039;element_t nth(int i,Cons*)&amp;#039;&amp;#039;&amp;#039; the return the i&amp;#039;th element of a list. or 0 if no such element exists.&lt;br /&gt;
==code==&lt;br /&gt;
 element_t nth(int i,Cons* list){&lt;br /&gt;
    int n;&lt;br /&gt;
    if( length(list)&amp;lt;i){&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    for(n=1;n&amp;lt;=i;n++){&lt;br /&gt;
        list = list-&amp;gt;tail;&lt;br /&gt;
    }&lt;br /&gt;
    return list-&amp;gt;head;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
this task is need to check that whether &amp;#039;&amp;#039;i &amp;#039;&amp;#039; is bigger than the length of the Cons* and return the element.&lt;br /&gt;
&lt;br /&gt;
= task4 =&lt;br /&gt;
write a funtion &amp;#039;&amp;#039;&amp;#039;int equal(Cons*,Cons*)&amp;#039;&amp;#039;&amp;#039; that returns true(1)if both list have exactly the same elements in same order,false(0) otherwise.&lt;br /&gt;
==code==&lt;br /&gt;
&lt;br /&gt;
= task5 =&lt;br /&gt;
write a funtion &amp;#039;&amp;#039;&amp;#039;Cond* find(element_t,Cons*)&amp;#039;&amp;#039;&amp;#039; to search for an element in list and return the Cons cell that contains this value,or the empty list if i does not occour in the list.&lt;br /&gt;
==code==&lt;br /&gt;
&lt;br /&gt;
= task6 =&lt;br /&gt;
==code==&lt;br /&gt;
= task7 =&lt;br /&gt;
==code==&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>