c语言按首字母升序排列,c语言输入n个数 ,然后奇数按照升序排列,偶数按降序排列...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

mzepkwtc

推荐于 2016.04.10

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:49%    等级:6

已帮助:658人

由于n不确定,故选择链表存储输入数据,这里选用一个无头结点的链表。编写创建链表、释放链表、排序三个函数,在主函数中调用这些函数来完成。代码如下://#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "stdlib.h"

typedef struct node{

int n;

struct node *next;

}*NODE,node;

void freenode(NODE p){//释放链表

if(p->next) freenode(p->next);

free(p);

}

NODE CreateLink(void){//创建链表

int x;

NODE head,p;

if((p=head=(NODE)malloc(sizeof(node)))==NULL){//创建头结点

printf("Establish a head node failure...");

return NULL;

}

printf("Input some data(non-numeric end)...\n");

while(scanf("%d",&x)==1){

if((p->next=(NODE)malloc(sizeof(node)))==NULL){

printf("Failed to create node...");

freenode(head);

return NULL;

}

p->next->n=x;

p=p->next;

}

p->next=NULL;

p=head;//删除头结点

head=head->next;

free(p);

return head;

}

void mysort(NODE p){//奇数升排偶数降排

NODE p1,p2;

for(;p;p=p->next){

for(p1=p,p2=p1->next;p2;p2=p2->next)

if(p->n&1 && p2->n&1 && p1->n>p2->n)

p1=p2;

else if(!(p->n&1) && !(p2->n&1) && p1->nn)

p1=p2;

if(p1!=p){

p1->n^=p->n;

p->n^=p1->n;

p1->n^=p->n;

}

}

}

int main(void){

NODE head=CreateLink(),p;

mysort(head);//按要求排序

for(p=head;p;p=p->next)//打出来看看

printf("%d ",p->n);

freenode(head);

printf("\n");

return 0;

}

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值