链表的排序与删除
来源:互联网 发布:蜗居海藻知乎 编辑:程序博客网 时间:2024/05/29 16:30
#include<iostream>#include<cstring>#include<malloc.h>using namespace std;typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;}LinkList;void CreateListF(LinkList *&L, ElemType a[], int n);void CreateListR(LinkList *&L, ElemType a[], int n);void DispList(LinkList *L);void DestoryList(LinkList *&L);void delmaxnode(LinkList *&L);//删除对达的节点void sort(LinkList *&L);//排序void CreateListF(LinkList *&L, ElemType a[], int n){LinkList *s;L = (LinkList*)malloc(sizeof(LinkList));L->next = NULL;for (int i = 0; i < n; i++){s = (LinkList*)malloc(sizeof(LinkList));s->data = a[i];s->next = L->next;L->next = s;}}void CreateListR(LinkList *&L, ElemType a[], int n){LinkList *s;LinkList *r;L = (LinkList*)malloc(sizeof(LinkList));L->next = NULL;r = L;for (int i = 0; i < n; i++){s = (LinkList*)malloc(sizeof(LinkList));s->data = a[i];r->next = s;r = s;}r->next = NULL;}void DispList(LinkList *L){LinkList *s;s = L->next ;while (s){cout << s->data << endl;s = s->next;}}void DestoryList(LinkList *&L){LinkList *s;LinkList *p;s = L;p = L->next;while (!p){free(s);s = p;p = s->next;}free(s);}void delmaxnode(LinkList *&L){LinkList *p = L->next; //p用来遍历链表LinkList *pre = L; //表示指向p的前一个节点LinkList *max = p; //表示最大节点LinkList *premax = pre;//表示最大节点的前一个节点while (p!=NULL){if (max->data < p->data){max = p;premax = pre;}p = p->next;pre = pre->next;}premax->next = max->next;free(max);}void sort(LinkList *&L){LinkList *p, *pre, *q;p = L->next->next; //p指向L的第2个数据节点L->next->next = NULL; //构造只含一个数据节点的有序表while (p != NULL){q = p->next; //q保存*p节点后继节点的指针pre = L; //从有序表开头进行比较,pre指向插入*p的前驱节点while (pre->next != NULL && pre->next->data<p->data)pre = pre->next; //在有序表中找插入*p的前驱节点*prep->next = pre->next; //将*pre之后插入*ppre->next = p;p = q; //扫描原单链表余下的节点}}int main(){LinkList *L;int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };CreateListF(L, a, 9);delmaxnode(L);DispList(L);CreateListR(L, a, 9);delmaxnode(L);DispList(L);for (;;){}return 0;}
0 0
- 链表的排序与删除
- 链表的插入 删除 排序 倒叙
- 链表的删除,插入,查找,排序
- 链表的删除 合并 排序 反转
- C++链表的建立,排序,删除
- 删除排序链表的重复节点
- 排序算法 kmp算法 双向链表的插入与删除
- 删除排序链表的的重复节点
- 链表的总结(链表排序、翻转、删除节点)
- 链表的插入、删除、排序、追加等源码
- 链表的创建,打印,测长,删除,排序
- 03链表的创建、插入、删除、遍历、排序
- c语言链表的创建、插入、删除、排序
- 链表的创建、插入、删除、排序和逆置
- 删除排序链表的所有重复节点
- 拥有删除,增加,排序等功能的链表
- Java实现链表的插入,删除,排序,输出
- Java实现-删除排序链表的重复元素1
- 工作中用到的Web技术
- 求公共前缀长度与所选字符串个数的乘积的最大值 Trie树求最值 UVA 11488 Hyper Prefix Sets
- 前端优化(压缩,位置)
- Chrome插件开发 – 浏览器交互
- Swift 面向协议编程
- 链表的排序与删除
- 数据结构分析之线性哈希表(Linear Hash Tables)
- 如何编写Android.mk(转)
- Mac 下 import django报错
- eclipse远程调试 - tomcat
- 面试---内联函数和宏定义的区别
- POJ 1113:Wall
- 这几天笔试常考算法
- SSRF漏洞的挖掘经验