C语言-创建链表及排序
#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语言-创建链表及排序的更多相关文章
- C语言创建链表
一.链表中结点的存储 链表的结点左边一部分是存放的数据,右边一部分是后继指针指向下一个结点的地址.C语言中通常定义一个结构体类型来存储一个结点,如下: struct node { int data; ...
- c语言 创建链表
#include "malloc.h" #include "stdio.h" #define LEN sizeof(struct student) typede ...
- C语言数据结构-创建链表的四种方法
结点类型: typedef int datatype; typedef struct NODE{ datatype data; struct NODE *next; }Node,*LinkList; ...
- 用c语言创建双向环形链表
作为一个C开发人员,无论在求职笔试题中,还是在工程项目中,都会遇到用c语言创建双向环形链表.这个也是理解和使用c指针的一项基本功. #include<...>//头文件省略 typedef ...
- c语言——单链表分拆——头插法创建链表,尾插法生成链表
#if 1 #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; ...
- [数据结构】【c语言】链表的创建和遍历
第一次写代码的博客,一个刚刚接触的新手,来这里主要是为了记录自己,方便自己以后浏览,也欢迎大家指正.先来个简单的,动态链表的创建和遍历. #include<stdio.h> #includ ...
- C语言之链表list
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...
- C语言之链表
这两天在复习C语言的知识,为了给下个阶段学习OC做准备,以下的代码的编译运行环境是Xcode5.0版本,写篇博文把昨天复习的C语言有关链表的知识给大家分享一下,以下是小菜自己总结的内容,代码也是按照自 ...
- C语言单链表实现19个功能完全详解
谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...
随机推荐
- Android(java)学习笔记103:Map集合的获取功能
package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import java.util.Map; i ...
- Simple Membership 学习笔记
第一步:新建项目后添加对WebMartix.Data 和 WebMatrix.WebData的引用第二步:在web.config中添加membership配置节第三步:修改Global.asax文件 ...
- IJKMediaFramework第三方库的使用
大多数做直播的时候使用 FFMpeg. IJKMediaFramework也是基于FFMpeg封装 使用起来比较简单,个人觉得如果有能力可以使用 FFMpeg , 使用 FFMpeg对 内存的占用比 ...
- oracle--clob
最近,收到这样的异常邮件: Error updating database. Cause: java.sql.SQLException: ORA-01461: can bind a LONG val ...
- javaweb学习总结七(XML语言作用、语法)
一:XML语言的概念以及作用 1:xml概念:extensible Markup language,可扩展行标记语言,因为html的语法比较混乱,不够严谨. 用html写的系统不好维护,所以w3c组织 ...
- hdu 4280 网络流
裸的网络流,递归的dinic会爆栈,在第一行加一句就行了 #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...
- 关于z-index的总结
z-index的作用 很多时候需要把一个元素覆盖到另一个元素之上,比如登入弹出框等,这个时候就需要z-index属性出场了.所以呢,z-index就是调节层的显示优先级,决定哪个显示在最上方.作用范围 ...
- Git CMD - reset: Reset current HEAD to the specified state
命令格式 git reset [-q] [<tree-ish>] [--] <paths>… git reset (--patch | -p) [<tree-ish&g ...
- Java -- Thread中start和run方法的区别
一.认识Thread的 start() 和 run() 1.start(): 我们先来看看API中对于该方法的介绍: 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 结果是两个线程并发 ...
- HTML JSOgN to string
JSON.stringify(json).replace(',', ', ').replace('[', '').replace(']', '')