C Program of sorting a singly linked list

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

932

Program:

<span class="com">/* C Program of sorting a singly 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">create_list</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="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="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">addatbeg</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">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">addatend</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"> selection</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="kwd">void</span><span class="pln"> bubble</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="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">selection_l</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="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">bubble_l</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">
	</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.Create List\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.Bubble Sort\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"4.Selection Sort\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"5.Bubble Sort by changing links\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"6.Selection Sort by changing links\n"</span><span class="pun">);</span><span class="pln">
		printf</span><span class="pun">(</span><span class="str">"7.Quit\n\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">
			start</span><span class="pun">=</span><span class="pln">create_list</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">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">
			bubble</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">4</span><span class="pun">:</span><span class="pln">
			selection</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">5</span><span class="pun">:</span><span class="pln">
			start</span><span class="pun">=</span><span class="pln">bubble_l</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">6</span><span class="pun">:</span><span class="pln">
			start</span><span class="pun">=</span><span class="pln">selection_l</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">7</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\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="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">create_list</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">int</span><span class="pln"> i</span><span class="pun">,</span><span class="pln">n</span><span class="pun">,</span><span class="pln">data</span><span class="pun">;</span><span class="pln">
	printf</span><span class="pun">(</span><span class="str">"Enter the number of nodes : "</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">n</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">if</span><span class="pun">(</span><span class="pln">n</span><span class="pun">==</span><span class="lit">0</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">

	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">addatbeg</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">for</span><span class="pun">(</span><span class="pln">i</span><span class="pun">=</span><span class="lit">2</span><span class="pun">;</span><span class="pln">i</span><span class="pun">&lt;=</span><span class="pln">n</span><span class="pun">;</span><span class="pln">i</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">"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">addatend</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="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 create_list()*/</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">p</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">
	p</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 : "</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">)</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">p</span><span class="pun">-&gt;</span><span class="pln">info</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">
	</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><span class="pln">

</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">addatbeg</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">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">
	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="com">/*End of addatbeg()*/</span><span class="pln">

</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">addatend</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">
	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">)</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">
	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">
	tmp</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">NULL</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 addatend()*/</span><span class="pln">

</span><span class="kwd">void</span><span class="pln"> selection</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">p</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">
	</span><span class="kwd">int</span><span class="pln"> tmp</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">for</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"> p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">!=</span><span class="pln">NULL</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">
	</span><span class="pun">{</span><span class="pln">
		</span><span class="kwd">for</span><span class="pun">(</span><span class="pln">q</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"> q</span><span class="pun">!=</span><span class="pln">NULL</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">
			</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">&gt;</span><span class="pln"> q</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">=</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">info</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">q</span><span class="pun">-&gt;</span><span class="pln">info</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">tmp</span><span class="pun">;</span><span class="pln">
			</span><span class="pun">}</span><span class="pln">
		</span><span class="pun">}</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="com">/*End of selection( )*/</span><span class="pln">

</span><span class="kwd">void</span><span class="pln"> bubble</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="kwd">end</span><span class="pun">,*</span><span class="pln">p</span><span class="pun">,*</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">int</span><span class="pln"> tmp</span><span class="pun">;</span><span class="pln">
	</span><span class="kwd">for</span><span class="pun">(</span><span class="kwd">end</span><span class="pun">=</span><span class="pln">NULL</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">!=</span><span class="pln">start</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">=</span><span class="pln">q</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
  		</span><span class="kwd">for</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"> p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">!=</span><span class="kwd">end</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">
		</span><span class="pun">{</span><span class="pln">
			q</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">
			</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">&gt;</span><span class="pln"> q</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">=</span><span class="pln">p</span><span class="pun">-&gt;</span><span class="pln">info</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">q</span><span class="pun">-&gt;</span><span class="pln">info</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">tmp</span><span class="pun">;</span><span class="pln">
			</span><span class="pun">}</span><span class="pln">
		</span><span class="pun">}</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="com">/*End of bubble( )*/</span><span class="pln">		
</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">selection_l</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">p</span><span class="pun">,*</span><span class="pln">q</span><span class="pun">,*</span><span class="pln">r</span><span class="pun">,*</span><span class="pln">s</span><span class="pun">,*</span><span class="pln">tmp</span><span class="pun">;</span><span class="pln">
	
	</span><span class="kwd">for</span><span class="pun">(</span><span class="pln">r</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"> p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">!=</span><span class="pln">NULL</span><span class="pun">;</span><span class="pln"> r</span><span class="pun">=</span><span class="pln">p</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">
	</span><span class="pun">{</span><span class="pln">
		</span><span class="kwd">for</span><span class="pun">(</span><span class="pln">s</span><span class="pun">=</span><span class="pln">q</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"> q</span><span class="pun">!=</span><span class="pln">NULL</span><span class="pun">;</span><span class="pln"> s</span><span class="pun">=</span><span class="pln">q</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">
			</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">&gt;</span><span class="pln"> q</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">=</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">q</span><span class="pun">-&gt;</span><span class="pln">link</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">tmp</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">!=</span><span class="pln">start</span><span class="pun">)</span><span class="pln">
                    r</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
				s</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">p</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">==</span><span class="pln">start</span><span class="pun">)</span><span class="pln">
					start</span><span class="pun">=</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
				tmp</span><span class="pun">=</span><span class="pln">p</span><span class="pun">;</span><span class="pln">
				p</span><span class="pun">=</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
				q</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="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 selection_l( )*/</span><span class="pln">

</span><span class="kwd">struct</span><span class="pln"> node </span><span class="pun">*</span><span class="pln">bubble_l</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="kwd">end</span><span class="pun">,*</span><span class="pln">r</span><span class="pun">,*</span><span class="pln">p</span><span class="pun">,*</span><span class="pln">q</span><span class="pun">,*</span><span class="pln">tmp</span><span class="pun">;</span><span class="pln">
		
	</span><span class="kwd">for</span><span class="pun">(</span><span class="kwd">end</span><span class="pun">=</span><span class="pln">NULL</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">!=</span><span class="pln">start</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">=</span><span class="pln">q</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
  		</span><span class="kwd">for</span><span class="pun">(</span><span class="pln">r</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"> p</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">!=</span><span class="kwd">end</span><span class="pun">;</span><span class="pln"> r</span><span class="pun">=</span><span class="pln">p</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">
		</span><span class="pun">{</span><span class="pln">
			q</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">
			</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">&gt;</span><span class="pln"> q</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">
				p</span><span class="pun">-&gt;</span><span class="pln">link</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">
				q</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">p</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">!=</span><span class="pln">start</span><span class="pun">)</span><span class="pln">
                    r</span><span class="pun">-&gt;</span><span class="pln">link</span><span class="pun">=</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
				</span><span class="kwd">else</span><span class="pln">
					start</span><span class="pun">=</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
				tmp</span><span class="pun">=</span><span class="pln">p</span><span class="pun">;</span><span class="pln">
				p</span><span class="pun">=</span><span class="pln">q</span><span class="pun">;</span><span class="pln">
				q</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="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 bubble_l( )*/</span><span class="pln">		</span>

Output:

1.Create List
2.Display
3.Bubble Sort
4.Selection Sort
5.Bubble Sort by changing links
6.Selection Sort by changing links
7.Quit

Enter your choice : 1
Enter the number of nodes : 5
Enter the element to be inserted : 6
Enter the element to be inserted : 4
Enter the element to be inserted : 3
Enter the element to be inserted : 8
Enter the element to be inserted : 3
1.Create List
2.Display
3.Bubble Sort
4.Selection Sort
5.Bubble Sort by changing links
6.Selection Sort by changing links
7.Quit

Enter your choice : 3
1.Create List
2.Display
3.Bubble Sort
4.Selection Sort
5.Bubble Sort by changing links
6.Selection Sort by changing links
7.Quit

Enter your choice : 2
List is : 3 3 4 6 8
1.Create List
2.Display
3.Bubble Sort
4.Selection Sort
5.Bubble Sort by changing links
6.Selection Sort by changing links
7.Quit

Enter your choice : 7
Press any key to continue . . .

Explanation:

C Program of sorting a singly 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.