#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. Android防微信首页左右滑动切换

    大家看到微信首页切换效果有没有觉得很炫,滑动切换,点击底部bar瞬间切换,滑动切换渐变效果,线上效果图: 之前也在博客上看到别人的实现,再次基础上,我做了些优化.首先说下实现原理,大神略过,o(╯□╰ ...

  2. Mysql 中bitwise对效率的影响??

    一直很疑惑,这个谁可以解释一下? 我也正在了解这方面的知识!

  3. HDU 3085 Nightmare Ⅱ (双向BFS)

    Nightmare Ⅱ Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  4. [改善Java代码]异常只为异常服务

    异常原本是正常逻辑的补充,但是有时候会被当做主逻辑使用.看如下代码: public class Client { enum Color { Red, Blue; } public static voi ...

  5. Mac下批量打包

    两种方式: 第一种:有源码 这种方式比较 简单.利用ant打包.直接shell脚本修改 配置渠道号的文件.我们目前是用的umeng的.在AndroidManifest.xml里.提供一个简单的修改渠道 ...

  6. office2013 win 32bit (含激活工具)

    office2013官方下载免费完整版32位(含永久激活工具) 百度云盘:http://pan.baidu.com/s/1jHgfZ1s

  7. img与父元素的间隙解决

    近来在做H5页面时,突然发现一个问题,使用一个div包裹一个img,在手机预览时,发现图片与div之间有间隙. 当时第一反应就是,是不是间距没有设置为0,于是预览了下代码: .active img { ...

  8. FindControl 无法找到控件问题解决方案

    若用 string cdept =((HtmlInputText)FindControl("dept0" + i.ToString())).Value; 提示结果为空值,即无法找到 ...

  9. 如何设置Win7系统中的上帝模式GodMode(转载)

    如何设置Win7系统中的上帝模式GodMode(转载) NT6系统中隐藏了一个秘密的“GodMode”,字面上译为“上帝模式”.God Mode其实就是一个简单的文件夹窗口,但包含了几乎所有系统的设置 ...

  10. 如何查看eclipse或Myeclipse的版本号

    对于eclipse 方法一: 在eclipse安装路径下用记事本打开 .eclipseproduct文件,里面就有eclipse版本号. 形如: name=Eclipse Platform id=or ...