链表的操作(未解决,排序后无法正确进行插入和删除)
来源:互联网 发布:上海网站推广优化公司 编辑:程序博客网 时间:2024/06/07 20:07
#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct St{int data;St* pNext;}NODE,*PNODE;PNODE creat_List(PNODE pHead){int len = 0;int val = 0;int i ;pHead = (PNODE)malloc(sizeof(NODE));if(pHead == NULL){printf("内存分配失败\n");exit(-1);}PNODE pTail = pHead;pTail->pNext = NULL;printf("请输入创造的节点数\n");scanf("%d",&len);for(i = 0; i < len;i++){PNODE pNew = (PNODE)malloc(sizeof(NODE));if(NULL == pNew){printf("节点分配失败\n");exit(-1);}printf("请输入节点的值(一个一个来)\n");scanf("%d",&val);pNew->data = val;pTail->pNext = pNew;pNew->pNext = NULL;pTail = pNew;}return pHead;}void travse_List(PNODE pHead ){PNODE p = pHead->pNext;int val;while(p != NULL){val = p->data;printf("%d ",val);p = p->pNext;}printf("\n");}void travse_List_sort(PNODE pHead ){PNODE p = pHead;int val;while(p != NULL){val = p->data;p = p->pNext;if(p!=NULL)printf("%d ",val);}printf("\n");}void insert_List(PNODE pHead,int n){PNODE p = pHead;int val;int j = 1;while(j < n ){j++;p = p->pNext;}PNODE pNew = (PNODE)malloc(sizeof(NODE));if(NULL == pNew){printf("内存分配失败\n");exit(-1);}printf("请输入插入节点的值\n");scanf("%d",&val);pNew->data = val;pNew->pNext = p->pNext;p->pNext = pNew;}void delete_List(PNODE pHead,int m){PNODE p = pHead;int j = 1;while(j < m ){ j++;p = p->pNext;}PNODE q = p->pNext;p->pNext = q->pNext;free(q);}PNODE sort_list(PNODE pHead){ PNODE s=NULL; PNODE r=pHead; while(r!=NULL) { PNODE t=r->pNext; PNODE cp=s; PNODE ap=NULL; while(cp!=NULL) { if(r->data < cp->data) break; else { ap=cp; cp=cp->pNext; } } if(ap==NULL) { r->pNext=s; s=r; } else { r->pNext=cp; ap->pNext=r; } r=t; } return s;}int main(){ PNODE pHead = NULL; int n = 0; int m = 0; pHead = creat_List( pHead);//创造节点 travse_List(pHead );//遍历输出 int t; printf("1.插入值请按1\n2.删除值请按2\n3.排序请按3\n4.退出请按任意键\n"); while(1) { scanf("%d",&t); if(t==1) { printf("输入在第几个节点前插入"); scanf("%d",&n); insert_List( pHead,n);//插入节点 travse_List(pHead ); } else if(t==2) { printf("输入第几个节点删除"); scanf("%d",&m); delete_List( pHead, m);//删除节点 travse_List(pHead ); } else if(t==3) { pHead=sort_list(pHead); travse_List_sort(pHead ); printf("游戏到此结束,想玩再开一把呗…………\n"); break; } else break; }return 0;}
0 0
- 链表的操作(未解决,排序后无法正确进行插入和删除)
- 堆的插入、删除和建立操作,堆排序
- 堆的插入、删除和建立操作,堆排序
- 数据结构链表的操作集合(建立,遍历,插入,删除,排序,长度,空判断等)
- 链表的基本操作(插入,删除,排序、逆置等)
- 链表的创建、插入、删除、排序和逆置
- Android的SQlite先天不足:删除 插入后主键不能自动排序 解决(附:SQlite开发的完整demo)
- Android的SQlite先天不足:删除 插入后主键不能自动排序 解决(附:SQlite开发的完整demo)
- Android的SQlite先天不足:删除 插入后主键不能自动排序 解决(附:SQlite开发的完整demo)
- 数据库的临时操作导致删除后无法插入新的一行
- 再论循环链表的插入和删除操作
- 双向链表的操作(插入和删除)
- 对五个数进行插入,删除,排序等操作.
- 对单链表进行 删除、插入、排序 等操作。
- 二叉排序数的基本操作(构造、插入、删除)
- 单链表的插入,删除排序操作
- 链表的插入 删除 排序 倒叙
- 链表的删除,插入,查找,排序
- 关于java中dao,model,service,impl,util的理解
- 有向图-邻接表
- uva11988 链表
- 卷积神经网络学习资料
- HDU 3555 Bomb (数位DP)
- 链表的操作(未解决,排序后无法正确进行插入和删除)
- myeclipse使用jta遇到Error in init: Log already in use? tmlog in ./\错误
- Java操作redis集群和主从
- 银行ATM存取款机系统
- BZOJ4835 [Lydsy2017年4月月赛]遗忘之树
- Javascript获取指定日期
- 洛谷 1087——FBI树
- php清除BOM
- python环境配置和包安装时候可能会用到的命令