【数据结构】算法10.3 插入排序-表插入
来源:互联网 发布:vscode前端必备插件 编辑:程序博客网 时间:2024/06/05 05:22
#include<stdio.h>#include<string.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define MAXINT -1#define EQ(a,b) ((a) == (b))#define LT(a,b) ((a) < (b))#define LQ(a,b) ((a) <= (b))typedef int Status;typedef int ElemType;typedef int RcdType;#define SIZE 100typedef struct{ RcdType rc; //记录项 int next; //指针项}SLNode;typedef struct{ SLNode r[SIZE]; //0号单元为表头结点 int length; //链表当前长度}SLinkListType; //静态链表类型/*******************************声明部分****************************************//*******************************函数部分****************************************/Status CreateSLinkList(SLinkListType *SL){ int i;/* printf("请输入静态链表长度:"); scanf("%d",&SL->length); for(i = 1;i <= SL->length; i++){ printf("请输入值:"); scanf("%d",&SL->r[i].rc); SL->r[i].next = i+1; }*/ int arr[8] = {49,38,65,97,76,13,27,49}; SL->r[0].rc = MAXINT; SL->r[0].next = 0; SL->length = 8; int j = 0; for(i = 1;i <= SL->length; i++){ SL->r[i].rc = arr[j++]; SL->r[i].next = -1; } // SL->r[SL->length].next = 0; return OK;}Status TraverseSLL(SLinkListType SL){ int i; printf("key : "); for(i = 0;i<=SL.length;i++){ printf("%5d",SL.r[i].rc); } printf("\n"); printf("next : "); for(i = 0;i<=SL.length;i++){ printf("%5d",SL.r[i].next); } printf("\n"); return OK;}int Sort(SLinkListType *SL){ int i,j,k; for(i = 1;i<=SL->length;i++){ for(k=0,j=SL->r[k].next;j && LT(SL->r[j].rc,SL->r[i].rc); k=j,j=SL->r[k].next); SL->r[i].next = j; SL->r[k].next = i; } return OK;}void Arrange(SLinkListType *SL){ int p,i,q; SLNode temp; p = SL->r[0].next; for(i = 1;i <= SL->length;i++){ while(p < i) p = SL->r[p].next; q = SL->r[p].next; if( p != i){ temp = SL->r[p]; SL->r[p] = SL->r[i]; SL->r[i] = temp; SL->r[i].next = p; }//if p = q; }//for}/*******************************主函数部分**************************************/int main(){ SLinkListType SL; printf("创建静态链表:\n"); CreateSLinkList(&SL); TraverseSLL(SL); printf("\n修改指针:\n"); Sort(&SL); TraverseSLL(SL); printf("\n表插入排序:\n"); Arrange(&SL); TraverseSLL(SL); return 0;}
0 0
- 【数据结构】算法10.3 插入排序-表插入
- 数据结构-插入排序算法
- 数据结构算法-插入排序
- 【数据结构】算法10.1 插入排序-直接插入
- 【数据结构】算法10.2 插入排序-折半插入
- 数据结构(插入排序算法)
- 数据结构与算法-插入排序
- 【数据结构与算法】插入排序
- [数据结构和算法]插入排序
- 算法与数据结构---插入排序
- 数据结构-插入排序-表插入排序
- 数据结构--排序算法(插入排序&&选择排序)
- 数据结构&算法实践—【排序|插入排序】插入排序
- 数据结构(C#)_排序算法(插入排序)
- 数据结构(C#)_排序算法(插入排序)
- 数据结构-算法: 插入排序(希尔排序法)
- 数据结构-算法: 插入排序(希尔排序法)
- 数据结构算法----排序(1)----插入排序
- HDU 3729 二分图匹配
- memcache详细解读
- SVD
- yii2表单
- 【poj 3254】Corn Fields 状压动规
- 【数据结构】算法10.3 插入排序-表插入
- 分布式session会话Sticky Sessions
- 启动tomcat错误 找不到bean
- Unity 3D安装与破解
- 大数据下并发同步的详解
- memcpy内存复制代码的安全版本
- JQuery删除和添加子节点
- 史上最全最强SpringMVC详细示例实战教程
- spring--mybatis--activeMQ集成(一)