#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. this的分析

    this是js中的一个关键字,当函数运行时,会自动生成的一个对象,只能在函数内部使用.随着函使用场合不同,this值会变化,但是始终指向调用函数的那个对象. 1.纯粹的函数调用 function bo ...

  2. oracle索引、 管理权限和角色

    索引 1 单列索引create index 索引名 on 表名(列名): 2复合索引在同一张表上可以有多个索引,但是要求列的组合必须不同.create index 索引名 on 表名(列名1, 列名2 ...

  3. iOS搜索框

    在iOS8以前搜索框是作为一个控件添加到TableViewController中, 有系统自带的搜索变量self.searchDisplayController 遵守一个搜索显示的协议<UISe ...

  4. 移动互联网(APP)产品设计的经验分享【转】

    随着移动互联网的发展,越来越多的Web产品开始布局移动端,因此最近经常碰到PM们在交流讨论移动APP产品的设计.我从事移动互联网已经有一年多了,通过不断的学习和实践也积累了一些心得,今天整理并分享一下 ...

  5. hdu 4284 深度优先搜索

    思路:就是找能走的走,遍历一边所有情况,满足就退出. Accepted 4284 328MS 2280K 2239 B C++ //#pragma comment(linker, "/STA ...

  6. 简单遗传算法求解n皇后问题

    版权声明:本文为博主原创文章,转载请注明出处. 先解释下什么是8皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.在不 ...

  7. Lombok(1.14.8) - @Getter, @Setter, @ToString, @EqualsAndHashCode & @Data

    @Getter / @Setter @Getter 和 @Setter,分别实现了 Gette r和 Setter 方法. package com.huey.hello.bean; import ja ...

  8. TM4C123GH6PM程序

    模式一&模式二:单次计时&周期计时/******************************************* 开发坏境:CCSv5.4 开发板:TIVA C Launch ...

  9. Ant 修改项目pom.xml文件应用

    <?xml version="1.0" encoding="UTF-8"?> <project name="project" ...

  10. 关于web请求中 获取真实IP

    HttpRequest request = HttpContext.Current.Request; if (!string.IsNullOrEmpty(request.ServerVariables ...