链表选择排序的C语言算法实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表选择排序的C语言算法实现相关的知识,希望对你有一定的参考价值。
参考技术A common.h
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
linklist.h
#include common.h
typedef int ElemType;
typedef struct Node /*结点类型定义*/
ElemType data;
struct Node * next;
Node, *LinkList; /* LinkList为结构指针类型*/
void CreateFromTail(LinkList L)
Node *r, *s;
char c;
int flag =1; /*设置一个标志,初值为1,当输入$时,flag为0,建表结束*/
r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/
c=getchar();
if(c!='$')
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
else
flag=0;
r->next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/
尾插法创建链表程序
/*_*====尾插法创建链表,返回链表头指针====*_*/
LinkList CreateFromTail2()
LinkList L;
Node *r, *s;
int c;
int flag =1;
L=(Node * )malloc(sizeof(Node));
L->next=NULL;
r=L;
while(flag)
scanf(%d,&c);
if(c!=-1)
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
else
flag=0;
r->next=NULL;
return L;
void linkSort(LinkList l)
Node *p,*q,*m,*n;
Node *temp1,*temp2;
if(l->next==NULL)
printf(NO LINKLIST!!!);
else
p=l;q=l->next;
while(q->next!=NULL)
m=p->next;
n=q->next;
temp1=m;
while(temp1->next!=NULL)
if(temp1->next->data<q->data && temp1->next->data<n->data)
m=temp1;n=temp1->next;
temp1=temp1->next;
/*_*====此循环用于找到基准(q)以后的序列的最小的节点=====*_*/
if(m!=p->next || (m==p->next && m->data>n->data))
p->next=n;
p=n;
m->next=q;
m=q;
q=q->next;
n=n->next;
p->next=q;
m->next=n;
/*_*======此条件用于交换两个节点*_*/
else
p=p->next;
q=q->next;
/*_*======此条件用于没有找到最小值时的p,q后移操作*_*/
/*_*=====外循环用于从前往后扫描,通过移动p,q指针实现=======*_*/
temp2=l->next;
printf(List after sorting is:\\n);
while(temp2!=NULL)
printf(%5d,temp2->data);
temp2=temp2->next;
printf(\\n);
void main()
Node *temp3;
LinkList l;
printf( =====(end by -1)======\\npress \\enter\\ after input the nember each time:\\n);
l=CreateFromTail2();
temp3=l->next;
if(temp3==NULL)
printf(NO LINKLIST!!!);
else
printf(List before sorting is:\\n);
while(temp3!=NULL)
printf(%5d,temp3->data);
temp3=temp3->next;
printf(\\n);
linkSort(l);
C语言试题175之实现选择排序算法
以上是关于链表选择排序的C语言算法实现的主要内容,如果未能解决你的问题,请参考以下文章