三九宝宝网宝宝教育教学论文

帮忙做道C语言的题双向链表的排序

02月07日 编辑 39baobao.com

[啄气球看图排序故事教案]幼儿园教案:许多许多的刺 教师:屈老师 活动目标: 1、理解故事情节,熟悉作品中的主要对话,丰富词汇:"噘"、"甩"、"叼"、"打个滚"。 2、感受作品中主人公接纳同伴、喜欢同伴的情感。 活动准...+阅读

#includetypedef struct Link/*双向链表结构体*/{ int data; struct Link *lift; struct Link *right;}linkx,*linky;linky Init();/*建立双向链表*/void PrLink(linky p);/*输出双向链表*/linky Sort(linky head);/*对双向链表排序*/linky Swap(linky head,linky one,linky two);/*任意交换双向链表两个结点的地址*/void main(void){ linky head; head=Init(); head=Sort(head); PrLink(head);}linky Init()/*建立链表*/{ linky p,q,head; int n=0; head=p=q=(linky)malloc(sizeof(linkx)); clrscr(); printf("please input 10 num: "); scanf("%d",&p->data);/*输入数据*/ head->lift=NULL; n++; while(n!=10)/*一直输入到规定的数字个数停止*/ { q=p; p=(linky)malloc(sizeof(linkx)); scanf("%d",&p->data);/*输入数据*/ q->right=p; p->lift=q; n++; } p->right=NULL; return(head);}linky Swap(linky head,linky one,linky two)/*任意交换两个结点*/{linky temp; if(one->lift==NULL&two->right==NULL)/*首和尾巴的交换*/ { if(one->right==two)/*只有两个结点的情况下*/ { two->right=one; two->lift=NULL; one->lift=two; one->right=NULL; head=two; } else/*有间隔的首尾交换*/ { one->right->lift=two; two->lift->right=one; two->right=one->right; one->lift=two->lift; two->lift=one->right=NULL; head=two;/*尾结点成为头结点*/ } } else if(two->right==NULL)/*尾和任意一个交换*/ { if(one->right==two)/*交换最后两个结点*/ { one->lift->right=two; two->lift=one->lift; two->right=one; one->lift=two; one->right=NULL; } else/*和前面其他结点交换*/ { temp=two->lift; temp->right=one; one->lift->right=two; one->right->lift=two; two->lift=one->lift; two->right=one->right; one->lift=temp; one->right=NULL; } } else if(one->lift==NULL)/*头和任意一个交换*/ { if(one->right==two)/*交换头两个结点*/ { two->right->lift=one; one->right=two->right; one->lift=two; two->right=one; two->lift=NULL; head=two; } else/*头结点和后面其他结点交换*/ { temp=one->right; temp->lift=two; one->lift=two->lift; one->right=two->right; two->lift->right=one; two->right->lift=one; two->right=temp; two->lift=NULL; head=two;/*交换的结点成为头结点*/ } } else/*当中的任意两个交换*/ { if(one->right==two)/*交换连在一起的两个结点*/ { temp=one->lift; one->lift->right=two; one->right->lift=two; one->lift=two; one->right=two->right; two->right->lift=one; two->right=one; two->lift=temp; } else/*交换隔开的两个结点*/ { one->lift->right=two; one->right->lift=two; one->lift=two->lift; temp=one->right; one->right=two->right; two->lift->right=one; two->right->lift=one; two->right=temp; two->lift=one->lift; } } return(head);}linky Sort(linky head)/*对链表排序*/{ linky i,j,t,p; int max; p=head; for(i=p;i->right!=NULL;i=i->right)/*用选择法的思想对这些结点排序*/ { max=i->data; for(j=i->right;j!=NULL;j=j->right) if(j->datadata; t=j; } if(max!=i->data)/*如果没有找到比i小的结点*/ { head=Swap(head,i,t);/*因为最终返回的是头结点,而头结点又有可能变化,所以每次头结点返回*/ i=t; } } return(head);}void PrLink(linky p)/*输出链表*/{ linky q; printf("Now the link: "); do { q=p; printf("%d ",p->data); p=p->right; free(q);/*释放输出结点*/ } while(p!=NULL); getch();}

以下为关联文档:

选择排序冒泡排序 C语言从程序运行需要的时间和储存空间来看,这两个吧,选择排序用的时间较少。我给你举个例子,这是一个比较直观的例子: 有十个数:10,9,8,7,6,5,4,3,2,1 。将他们按从小到大的顺序排成一...

C语言编写电子词典要求用户输入十个单词和释义然后系统排序#include "stdio.h" #include "string.h" #define N_1 3 #define N_2 20 #define N_3 200 int i,j; /**************************************/ int strccmp(char *str1,char *s...

中班教案反思按物体特征排序< 世界上没有一个人十全十美,更找不到没犯过错的人.一个人犯了过错,通常都会自我反省,但有些人只是口头上随便说说,敷衍了事,却没去躬行实践,那反省又有什麽用呢 所以一个人不但要...

c语言快速排序qsort函数你这个是c程序还是c++ c++的话类型要求比较严格 比较函数接受的参数类型应该是const void* c的话你main里函数原型的声明也不对啊,这样改一下 #include<stdlib.h> #include<s...

C语言关于qsort的问题为什么不能排序你的cmp()函数的的参数类型不正确,qsort()函数要求cmp()函数的形参必须是const void*类型的,而不是int类型,修改如下: //-------------------------------------------------------...

C语言qsort函数对char型strmn数组的排序// 这样写就OK啦。 int cmp(const void *a, const void *b) { char *aa = (char *) a; char *bb = (char *) b; return strcmp(aa,bb); } // const void *a是表示一个指向co...

c语言如何用qsort排序试想一下,如果让你自己设计qsort函数,需要些什么东西,首地址要有吧,总共有几个元素要有吧,每个元素占多大的内存要有吧(想想就知道函数内部要根据内存块的大小交换数据实现排序),最...

5以内的轻重排序幼儿中班教案目标: 1、能安静的听故事,懂得和大家一起玩很快乐。 2、学说短句:“宝宝,我和你一起玩。”、“大家一起玩,真开心。” 3、体验参与游戏的快乐。 准备: 挂图:(托班下册9号挂图),故事中...

图书馆的书是按什么排序通常按照分类排序。 1、图书馆的书脊上一般有一个标签,标签上有两组号码,即:索书号。一组为分类号,一组为书次号。索书号是确定一本书排架的依据。 2、索书号由分类号和书次号两...

推荐阅读
图文推荐