#include "stdafx.h"
#include <stdlib.h>
//创建一个节点,data为value,指向NULL
Node* Create(int value){
Node* head = (Node*)malloc(sizeof(Node));
head->data = value;
head->next = NULL;
return head;
}
//销毁链表
bool Destroy_List(Node* head){
Node* temp;
while (head){
temp = head->next;
free(head);
head = temp;
}
head = NULL;
return true;
}
//表后添加一个节点,Create(value)
bool Append(Node* head,int value){
Node* n = Create(value);
Node* temp = head;
while (temp->next){
temp = temp->next;
}
temp->next = n;
return ;
}
//打印链表
void Print_List(Node* head){
Node* temp = head->next;
while (temp){
printf("%d->", temp->data);
temp = temp->next;
}
printf("\n");
}
//在链表的第locate个节点后(头节点为0)插入创建的节点Create(value)
bool Insert_List(Node* head, int locate, int value){
Node* temp = head;
Node* p;
Node* n = Create(value);
if (locate < )
return false;
while (locate--){
if (temp->next == NULL){
temp->next = Create(value);
return true;
}
temp = temp->next;
}
p = temp->next;
temp->next = n;
n->next = p;
return true;
}
//删除第locate个节点后(头节点为0)的节点
bool Delete_List(Node* head, int locate){
Node* temp = head;
Node* p;
if (locate < )
return false;
while (locate--){
if (temp == NULL){
return false;
}
temp = temp->next;
}
p = temp->next->next;
free(temp->next);
temp->next = NULL;
temp->next = p;
return true;
}
//获取链表长度(不包括头节点)
int Size_List(Node* head){
Node* temp = head;
int size = ;
while (temp->next){
temp = temp->next;
size++;
}
return size;
}
//链表的三种排序(选择,插入,冒泡)
bool Sort_List(Node* head){
int t = ;
int size = Size_List(head);
//选择排序
/*for (Node* temp = head->next; temp != NULL; temp = temp->next){
for (Node* p = temp; p != NULL; p = p->next){
if (temp->data > p->data){
printf("换%d和%d\n", temp->data, p->data);
t = temp->data;
temp->data = p->data;
p->data = t;
}
}
}*/
//插入排序
/*for (Node* temp = head->next->next; temp != NULL; temp = temp->next){
for (Node* p = head; p->next != NULL; p = p->next){
if (p->next->data > temp->data)
{
printf("换%d和%d\n", temp->data, p->next->data);
t = temp->data;
temp->data = p->next->data;
p->next->data = t;
}
}
}*/
//冒泡排序
for (Node* temp = head->next; temp->next != NULL; temp = temp->next){
for (Node* p = head->next; p->next != NULL; p = p->next){
if (p->data > p->next->data){
t = p->data;
p->data = p->next->data;
p->next->data = t;
}
}
}
return ;
}

c语言实现基本的数据结构(二) 链表(包括链表的三种简单排序算法)的更多相关文章

  1. 几种经典排序算法的R语言描述

    1.数据准备 # 测试数组 vector = c(,,,,,,,,,,,,,,) vector ## [] 2.R语言内置排序函数 在R中和排序相关的函数主要有三个:sort(),rank(),ord ...

  2. O(n*logn)级别的算法之二(快速排序)的三种实现方法详解及其与归并排序的对比

    一,单路快排1.测试用例: #ifndef INC_06_QUICK_SORT_DEAL_WITH_NEARLY_ORDERED_ARRAY_SORTTESTHELPER_H #define INC_ ...

  3. 几种常见排序算法的基本介绍,性能分析,和c语言实现

    本文介绍6种常见的排序算法,以及他们的原理,性能分析和c语言实现: 为了能够条理清楚,本文所有的算法和解释全部按照升序排序进行 首先准备一个元素无序的数组arr[],数组的长度为length,一个交换 ...

  4. linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用

    ---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10  一.虚拟网络三种连接方式 当在V ...

  5. HIbernate学习笔记(二) hibernate对象的三种状态与核心开发接口

    1.在hibernate中持久化对象有三个状态,这个面试时可能会问到: (1)transient瞬时态:在数据库中没有与之匹配的数据,一般就是只new出了这个对象,并且在session缓存中也没有即此 ...

  6. java学习总结篇二--3 种简单排序

    本篇文章,先从数据结构开始,一边总结,一边反思,寻求最优解. 本文简单温习下最基础的三类算法:选择,冒泡,插入.先定义一个交换数组作为备用: /** * 交换数组元素 * @param arr * @ ...

  7. Hibernate学习(二)———— 一级缓存和三种状态解析

    一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先sessi ...

  8. WPF路由事件二:路由事件的三种策略

    一.什么是路由事件 路由事件是一种可以针对元素树中的多个侦听器而不是仅仅针对引发该事件的对象调用处理程序的事件.路由事件是一个CLR事件. 路由事件与一般事件的区别在于:路由事件是一种用于元素树的事件 ...

  9. 8种主要排序算法的C#实现 (二)

    归并排序 归并排序也是采用“分而治之”的方式.刚发现分治法是一种算法范式,我还一直以为是一种需要意会的思想呢. 不好意思了,孤陋寡闻了,哈哈! 原理:将两个有序的数列,通过比较,合并为一个有序数列.  ...

随机推荐

  1. ODAC Developer Downloads - Oracle Universal Installer

    https://www.baidu.com/link?url=BL2vRNMWap6AFJcmsFCEKi3KxZ2SgmtVJoihVKhF-SPgzvJHNkbk_j7nz1HdtAAWZ22NM ...

  2. python 解决 idea 或者 pucharm 编译器在引入自定义的 py 文件的类时,没有提示的问题

    1,问题描述: 假设我们有两个问价  a.py 和 b.py 其中分别有 A 类 和 B 类,现在我们想在 b.py 中引用 A 类 语法为 from a import A  虽然这是正确的语法,但是 ...

  3. LODOP常见问题连接(含常见小问答博文)

    问答大全 纸张打印机 注册 table表格 clodop测试地址 字体 超文本 行间距.字间距 clodop回调函数 条码 页眉页脚 SET……STYLEA 水平居中 简短排查 提示报错 慢进度条 套 ...

  4. web page popup window model

    jQuery UI dialog: https://jqueryui.com/dialog/ Semantic UI https://semantic-ui.com/modules/modal.htm ...

  5. Intellij IDEA 启动出现“前言中不允许有内容”

    修改错误方法,在IDEA的workspace中找到 .idea 目录下的workspace.xml文件删除即可.

  6. 翻书shader

    //把下面的shader挂载到plane上,调节_Angle Shader "Unlit/PageTurning"{ Properties { _Color ("Colo ...

  7. Matlab 线性规划问题模型代码

    线性规划问题的基本内容 线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题. \[ \min z=\sum_{j=1}^{n} f_{j} x_{j} \] \[ ...

  8. JDK动态代理为什么必须针对接口

    查看jdk的动态代理源码发现: 动态代理实际上是程序在运行中,根据被代理的接口来动态生成代理类的class文件,并加载class文件运行的过程,通过反编译被生成的$Proxy0.class文件发现: ...

  9. Python pip版本升级

    pip版本升级命令: python -m pip install --upgrade pip 如果报错代码如下: (venv) C:\Users\ssdy\PycharmProjects\untitl ...

  10. 国内P2P网贷行业再次大清理,仅剩646家

    最近有网贷行业头部网站流出消息,国内网贷行业再次迎来大洗牌 清扫之后网贷的平台数量仅剩646家,数量陡降 根据小编了解.自2007年国外网络借贷平台模式引入中国以来,由于国家一时没有做出相应规定个条例 ...