#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. cocos2d-x之MoonWarriors用c++实现

    玩了sample里面的cocos2d-html5的MoonWarriros,感觉效果做得挺不错的,但是源代码是javascript,鄙人又不会这门语言. github上也有别人贡献的c++代码,不过还 ...

  2. 1. Android 系统上一款开源的图表库

    1. MPAndroidChart  MPAndroidChart 是 Android 系统上一款开源的图表库.目前提供线图和饼图,支持选择.缩放和拖放. 一个可以拖动缩放的图表库,包含曲线图.直方图 ...

  3. Android(java)学习笔记83:finally关键字的作用

    package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  4. ASP.NET弹出模态对话框【转】

    主页面 PageBase.aspx.cs 中的代码 protected void Page_Load(object sender, EventArgs e) {    if (!this.IsPost ...

  5. TextFiled 中输入金额

    要求: 输入的金额不能超过六位, 小数点后面只能输入两位小数 如果 textFIled  中第一位输入的是0 ,后面必须输入小数点,否则禁止输入 用到 textfiled代理方法 #pragma ma ...

  6. git merge branches

    git clone url #克隆新的版本库 git init git pull repo_name #有关联的远程库,抽取并和本地合并 git fetch remote_repo_name #抽取并 ...

  7. python(3)-内置函数2

    frozenset()    定义一个不能添加修改的集合 >>> s = frozenset() >>> s.add("aaa") Traceb ...

  8. PHP底层的运行机制与原理

    PHP说简单,但是要精通也不是一件简单的事.我们除了会使用之外,还得知道它底层的工作原理. PHP是一种适用于web开发的动态语言.具体点说,就是一个用C语言实现包含大量组件的软件框架.更狭义点看,可 ...

  9. 关于js判断鼠标移入元素的方向——上下左右

    一开始我是这么想的,将待移入的元素分割四块,用mousemove获取第一次鼠标落入的区域来判断鼠标是从哪个方向进去的. 所以只要写个算法来判断鼠标的值落入该元素的区域就可以得出鼠标移入的方向,如下图: ...

  10. MapReduce中使用SequenceFile的方式上传文件到集群中

    如果有很多的小文件,上传到HDFS集群,每个文件都会对应一个block块,一个block块的大小默认是128M,对于很多的小文件来说占用了非常多的block数量,就会影响到内存的消耗, MapRedu ...