C Program of sorted linked list

Data Structure Linked List (Article) Linked List (Program)

825

Program:

<span class="com">/* C Program of sorted linked list*/</span><span class="pln">

</span><span class="com">#include</span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="com">#include</span><span class="str">&lt;stdlib.h&gt;</span><span class="pln">

</span><span class="kwd">struct</span><span class="pln"> node
</span><span class="pun">{</span><span class="pln">
	</span><span class="kwd">int</span><span class="pln"> info</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">link</span><span class="pun">;</span><span class="pln">
</span><span class="pun">};</span><span class="pln">
</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">insert_s</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">,</span><span class="kwd">int</span><span class="pln"> data</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> search</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">,</span><span class="kwd">int</span><span class="pln"> data</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> display</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">);</span><span class="pln">
main</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	</span><span class="kwd">int</span><span class="pln"> choice</span><span class="pun">,</span><span class="pln">data</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">=</span><span class="pln">NULL</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">while</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"1.Insert\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"2.Display\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"3.Search\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"4.Exit\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"Enter your choice : "</span><span class="pun">);</span><span class="pln">
		scanf</span><span class="pun">(</span><span class="str">"%d"</span><span class="pun">,&amp;</span><span class="pln">choice</span><span class="pun">);</span><span class="pln">
		</span><span class="kwd">switch</span><span class="pun">(</span><span class="pln">choice</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">{</span><span class="pln">
		 </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln">
			printf</span><span class="pun">(</span><span class="str">"Enter the element to be inserted : "</span><span class="pun">);</span><span class="pln">
			scanf</span><span class="pun">(</span><span class="str">"%d"</span><span class="pun">,&amp;</span><span class="pln">data</span><span class="pun">);</span><span class="pln">
			start</span><span class="pun">=</span><span class="pln">insert_s</span><span class="pun">(</span><span class="pln">start</span><span class="pun">,</span><span class="pln">data</span><span class="pun">);</span><span class="pln">
			</span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
		 </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln">
			display</span><span class="pun">(</span><span class="pln">start</span><span class="pun">);</span><span class="pln">
			</span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
		 </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">3</span><span class="pun">:</span><span class="pln">
			printf</span><span class="pun">(</span><span class="str">"Enter the element to be searched : "</span><span class="pun">);</span><span class="pln">
			scanf</span><span class="pun">(</span><span class="str">"%d"</span><span class="pun">,&amp;</span><span class="pln">data</span><span class="pun">);</span><span class="pln">
			search</span><span class="pun">(</span><span class="pln">start</span><span class="pun">,</span><span class="pln">data</span><span class="pun">);</span><span class="pln">
			</span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
		 </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">4</span><span class="pun">:</span><span class="pln">
			</span><span class="kwd">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
		 </span><span class="kwd">default</span><span class="pun">:</span><span class="pln">
			printf</span><span class="pun">(</span><span class="str">"Wrong choice\n"</span><span class="pun">);</span><span class="pln">
		</span><span class="pun">}</span><span class="com">/*End of switch*/</span><span class="pln">
	</span><span class="pun">}</span><span class="com">/*End of while*/</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="com">/*end of main */</span><span class="pln">

</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">insert_s</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">,</span><span class="kwd">int</span><span class="pln"> data</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">p</span><span class="pun">,*</span><span class="pln">tmp</span><span class="pun">;</span><span class="pln">
	tmp</span><span class="pun">=(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*)</span><span class="pln">malloc</span><span class="pun">(</span><span class="kwd">sizeof</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node</span><span class="pun">));</span><span class="pln">
	tmp</span><span class="pun">-&gt;</span><span class="pln">info</span><span class="pun">=</span><span class="pln">data</span><span class="pun">;</span><span class="pln">
	</span><span class="com">/*list empty or new node to be added before first node*/</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">start</span><span class="pun">==</span><span class="pln">NULL </span><span class="pun">||</span><span class="pln"> data</span><span class="pun">&lt;</span><span class="pln">start</span><span class="pun">-&gt;</span><span class="pln">info</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		tmp</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">start</span><span class="pun">;</span><span class="pln">
		start</span><span class="pun">=</span><span class="pln">tmp</span><span class="pun">;</span><span class="pln">
		</span><span class="kwd">return</span><span class="pln"> start</span><span class="pun">;</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	</span><span class="kwd">else</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		p</span><span class="pun">=</span><span class="pln">start</span><span class="pun">;</span><span class="pln">
		</span><span class="kwd">while</span><span class="pun">(</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">!=</span><span class="pln">NULL </span><span class="pun">&amp;&amp;</span><span class="pln"> p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">-&gt;</span><span class="pln">info </span><span class="pun">&lt;</span><span class="pln"> data</span><span class="pun">)</span><span class="pln">
			p</span><span class="pun">=</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">;</span><span class="pln">
		tmp</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">;</span><span class="pln">
		p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">tmp</span><span class="pun">;</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> start</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="com">/*End of insert()*/</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> search</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">,</span><span class="kwd">int</span><span class="pln"> data</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">p</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">int</span><span class="pln"> pos</span><span class="pun">;</span><span class="pln">
	
	</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">start</span><span class="pun">==</span><span class="pln">NULL </span><span class="pun">||</span><span class="pln"> data </span><span class="pun">&lt;</span><span class="pln"> start</span><span class="pun">-&gt;</span><span class="pln">info</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"%d not found in list\n"</span><span class="pun">,</span><span class="pln">data</span><span class="pun">);</span><span class="pln">
		</span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	p</span><span class="pun">=</span><span class="pln">start</span><span class="pun">;</span><span class="pln">
	pos</span><span class="pun">=</span><span class="lit">1</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">while</span><span class="pun">(</span><span class="pln">p</span><span class="pun">!=</span><span class="pln">NULL </span><span class="pun">&amp;&amp;</span><span class="pln"> p</span><span class="pun">-&gt;</span><span class="pln">info</span><span class="pun">&lt;=</span><span class="pln">data</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">info</span><span class="pun">==</span><span class="pln">data</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">{</span><span class="pln">
			printf</span><span class="pun">(</span><span class="str">"%d found at position %d\n"</span><span class="pun">,</span><span class="pln">data</span><span class="pun">,</span><span class="pln">pos</span><span class="pun">);</span><span class="pln">
			</span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
		</span><span class="pun">}</span><span class="pln">
		p</span><span class="pun">=</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">;</span><span class="pln">
		pos</span><span class="pun">++;</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	printf</span><span class="pun">(</span><span class="str">"%d not found in list\n"</span><span class="pun">,</span><span class="pln">data</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="com">/*End of search()*/</span><span class="pln">

</span><span class="kwd">void</span><span class="pln"> display</span><span class="pun">(</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">start</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">start</span><span class="pun">==</span><span class="pln">NULL</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"List is empty\n"</span><span class="pun">);</span><span class="pln">
		</span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	q</span><span class="pun">=</span><span class="pln">start</span><span class="pun">;</span><span class="pln">
	printf</span><span class="pun">(</span><span class="str">"List is :\n"</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">while</span><span class="pun">(</span><span class="pln">q</span><span class="pun">!=</span><span class="pln">NULL</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"%d "</span><span class="pun">,</span><span class="pln">q</span><span class="pun">-&gt;</span><span class="pln">info</span><span class="pun">);</span><span class="pln">
		q</span><span class="pun">=</span><span class="pln">q</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">;</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	printf</span><span class="pun">(</span><span class="str">"\n"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="com">/*End of display() */</span>

Output:

1.Insert
2.Display
3.Search
4.Exit
Enter your choice : 1
Enter the element to be inserted : 12
1.Insert
2.Display
3.Search
4.Exit
Enter your choice : 1
Enter the element to be inserted : 13
1.Insert
2.Display
3.Search
4.Exit
Enter your choice : 2
List is :
12 13
1.Insert
2.Display
3.Search
4.Exit
Enter your choice : 3
Enter the element to be searched : 77
77 not found in list
1.Insert
2.Display
3.Search
4.Exit
Enter your choice : 4
Press any key to continue . . .

Explanation:

C Program of sorted linked list

This Particular section is dedicated to Programs only. If you want learn more about Data Structure. Then you can visit below links to get more depth on this subject.