#include <stdio.h>
#define NEWNODE (Node *)malloc(sizeof(Node)) typedef struct mynode{
int num;
struct mynode *next;
}Node; Node* creat(){
Node *head=NULL,*p,*q;
//head:表头,q:表尾
q=p=NEWNODE;
scanf("%d",&p->num);
p->next=NULL;
while(p->num>){
if(head==NULL){
head=q=p;
}else{
q->next=p;
q=p;
}
p=NEWNODE;
scanf("%d",&p->num);
p->next=NULL;
}
return head;
} void print(Node *head){
Node *p;
p=head;
while(p)
{
printf("%d ",p->num);
p=p->next;
}
printf("\n");
} int len(Node *head){
int k=;
Node *p;
p=head;
while(p)
{
k++;
p=p->next;
}
return k;
} //选择排序-交换结点
Node *select_sort(Node *head){
Node *begin=NULL,*end=NULL; //有序链表的首尾结点指针
Node *p;
Node *min,*premin; //最小结点及其前一个结点
if(!head)return NULL;
while(head){
//循环找出无序链表中的最小结点min及其前一个结点premin
p=head;
min=p;
while(p->next){
if(min->num>p->next->num){
premin=p;
min=p->next;
}
p=p->next;
}
//1. 将min接入有序链表
//如果有序链表为NULL
if(begin==NULL){
begin=end=min;
}else{
end->next=min;
end=min;
}
//2. 在无序链表中删除结点min
if(min==head){
head=min->next;
}else{
premin->next=min->next;
}
}
end->next=NULL;
return begin;
} //冒泡排序-交换值
void pubble_sort(Node *head)
{
Node *end;
int t;
Node *p,*pre;
p=head;
//end~NULL为有序部分,将end置为尾结点
while(p->next)p=p->next;
end=p;
//每轮冒泡end左移一个结点,一直到head与end重合
while(head!=end){
p=head;
while(p!=end){
if(p->num>p->next->num){
t=p->num;
p->num=p->next->num;
p->next->num=t;
}
pre=p;
p=p->next;
}
end=pre;
}
} int main()
{
Node *head;
head=creat(); pubble_sort(head); print(head); return ;
}

C语言-创建链表及排序的更多相关文章

  1. C语言创建链表

    一.链表中结点的存储 链表的结点左边一部分是存放的数据,右边一部分是后继指针指向下一个结点的地址.C语言中通常定义一个结构体类型来存储一个结点,如下: struct node { int data; ...

  2. c语言 创建链表

    #include "malloc.h" #include "stdio.h" #define LEN sizeof(struct student) typede ...

  3. C语言数据结构-创建链表的四种方法

    结点类型: typedef int datatype; typedef struct NODE{ datatype data; struct NODE *next; }Node,*LinkList; ...

  4. 用c语言创建双向环形链表

    作为一个C开发人员,无论在求职笔试题中,还是在工程项目中,都会遇到用c语言创建双向环形链表.这个也是理解和使用c指针的一项基本功. #include<...>//头文件省略 typedef ...

  5. c语言——单链表分拆——头插法创建链表,尾插法生成链表

    #if 1 #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; ...

  6. [数据结构】【c语言】链表的创建和遍历

    第一次写代码的博客,一个刚刚接触的新手,来这里主要是为了记录自己,方便自己以后浏览,也欢迎大家指正.先来个简单的,动态链表的创建和遍历. #include<stdio.h> #includ ...

  7. C语言之链表list

    #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...

  8. C语言之链表

    这两天在复习C语言的知识,为了给下个阶段学习OC做准备,以下的代码的编译运行环境是Xcode5.0版本,写篇博文把昨天复习的C语言有关链表的知识给大家分享一下,以下是小菜自己总结的内容,代码也是按照自 ...

  9. C语言单链表实现19个功能完全详解

    谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...

随机推荐

  1. 奥运会订票系统c语言代写源码下载

    制作能够实现2008北京奥运会网上订票的系统,能够实现购票人员注册.购票.管理人员可以设置各个比赛场地的赛事安排及票数. 程序要求实现的功能如下: 购票者信息注册:购票者可以用昵称和身份证进行注册,若 ...

  2. Selector中的各种状态详解

    今天弄这个selector把脑壳弄得清痛,最终我的理解如下: 官方关于这个的介绍在:http://developer.android.com/guide/topics/resources/drawab ...

  3. linux别名

    alias: alias   cdn ='cd /opt/lammp' [root@besttest /]# cdn[root@besttest lampp]# 如果想永久生效写进root/.bash ...

  4. MySQL 更改默认编码为 utf8 (转)

      转自blog.sina.com.cn/s/blog_4c451e0e0100vefm.html 1.打开MySQL安装目录找到 my.ini,如:C:\Program Files\MySQL\My ...

  5. [改善Java代码]不要覆写静态方法

    建议33: 不要覆写静态方法 我们知道在Java中可以通过覆写(Override)来增强或减弱父类的方法和行为,但覆写是针对非静态方法(也叫做实例方法,只有生成实例才能调用的方法)的,不能针对静态方法 ...

  6. 【Stirling Number】

    两类Stirling Number的简介与区别(参考自ACdreamer的CSDN) Stirling Number I --- s(n,k):将n个物体排成k个非空循环排列(环)的方法数. 递推式: ...

  7. Xcode磁盘空间大清理(转)

    Xcode磁盘空间大清理 我的设备是Macbook Air 13’ Mid 2011,128G SSD.最近开始有些存储压力了,用Clean My Mac清理一部分旧文件后,决定对Xcode动手. 移 ...

  8. Delphi各个版本和发展历史(转)

    Delphi,是Windows平台下著名的快速应用程序开发工具(Rapid Application Development,简称RAD).它的前身,即是DOS时代盛行一时的“BorlandTurbo ...

  9. 网络编辑器插件ckeditor+ckfinder配置

    原帖地址 另外一个 去掉编辑器的下边栏 在config.js中加入: config.removePlugins = 'elementspath'; config.resize_enabled = fa ...

  10. js如何判断一个数组中是否有重复的值

    引自:http://bbs.tianya.cn/post-414-38497-1.shtml 方法一: var ary = new Array("111","22&quo ...