c语言链表的创建、插入、删除、排序
来源:互联网 发布:西安网络直播招聘 编辑:程序博客网 时间:2024/05/16 17:01
#include<stdio.h>#include<malloc.h>typedef struct Node{int data;struct Node * pNext;}NODE,*PNODE;PNODE create_list(void);void traverse_list(PNODE pHead);bool is_empty(PNODE pHead);int length_list(PNODE pHead);void sort_list(PNODE pHead);bool insert_list(PNODE pHead,int pos,int val);bool delete_list(PNODE pHead,int pos,int * pVal);PNODE create_list(void){int len;int val;int i;printf("请输入节点个数:");scanf("%d",&len);PNODE pHead = (PNODE)malloc(sizeof(NODE));pHead->pNext = NULL;PNODE pTail = pHead;if(NULL==pHead){printf("内存分配失败");exit(-1);}for(i = 0;i<len;i++){printf("请输入第%d个节点的值",i+1);scanf("%d",&val);PNODE pNew = (PNODE)malloc(sizeof(NODE));if(NULL==pHead){printf("内存分配失败");exit(-1);}pNew->data=val;pTail->pNext=pNew;pNew->pNext = NULL;pTail = pNew;}return pHead;}void traverse_list(PNODE pHead){PNODE p = pHead->pNext;while(NULL!=p){printf("%d",p->data);p=p->pNext;}return;}bool is_empty(PNODE pHead){if(NULL == pHead->pNext){return true;}else{return false;}}int length_list(PNODE pHead){PNODE p = pHead->pNext;int cnt=0;while(NULL!=p){cnt = cnt+1;p=p->pNext;}return cnt;}void sort_list(PNODE pHead){int i,j,t;PNODE p,q;int len=length_list(pHead);for(i=0,p=pHead->pNext;i<len;i++,p=p->pNext){for(j=i+1,q=p->pNext;j<len;j++,q=q->pNext){t = p->data;p->data = q->data;q->data = t;}}}bool insert_list(PNODE pHead,int pos,int val){int i = 0;PNODE p = pHead;while(NULL != p && i<pos-1){p=p->pNext;i++;}if(i>pos-1 || NULL==p){return false;}PNODE pNew = (PNODE)malloc(sizeof(NODE));if(NULL==pNew){printf("分配内存失败");exit(-1);}pNew->data = val;pNew->pNext = p->pNext;p->pNext = pNew;return true;}bool delete_list(PNODE pHead,int pos,int * pVal){int i = 0;PNODE p = pHead;while(NULL != p->pNext && i<pos-1){p=p->pNext;i++;}if(i>pos-1 || NULL==p->pNext){return false;}PNODE pOld = p->pNext;*pVal = pOld->data;p->pNext = p->pNext->pNext;free(pOld);pOld = NULL;return true;}
0 0
- c语言链表的创建、插入、删除、排序
- C语言中,链表的创建,插入,删除,遍历,求链表长度,排序等
- c语言单链表的创建、插入、删除
- c语言实现单链表的操作:创建,删除,插入,反转, 排序等
- c语言单向列表的创建、插入、删除、排序和遍历。。。
- C语言单链表的创建、插入、查找、删除、求长、排序、遍历
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言链表的创建、插入、查找、删除、清空操作
- C语言单向链表的创建、释放、插入、删除、翻转操作练习
- 用c语言完成一个双向链表的创建,插入,删除
- [转]C语言之单向链表的创建插入删除等功能
- C语言链表的一般操作,创建,插入,遍历,删除
- C语言实现链表的创建,初始化,插入,删除,查找
- (C语言)链表的创建、遍历、插入和删除
- C语言中单向非循环链表的生成,遍历,排序,插入和删除
- 03链表的创建、插入、删除、遍历、排序
- 链表的创建、插入、删除、排序和逆置
- C11数组
- 黑马程序员—Java的String类以及Java基本数据类型对象包装类
- viewPager控制滑动速度和时间:利用反射机制实现
- C#中正则表达式的使用
- 几张截图
- c语言链表的创建、插入、删除、排序
- Sublime Text3 注册码,亲测可用
- MVC三层结构 设计项目步骤总结
- 完成一个简单的时间片轮转多道程序内核代码(一)
- leetCode 29.Divide Two Integers (两整数相除) 解题思路和方法
- OGNL详解
- Jquery怎么获取元素文档大小、偏移、位置和滚动条位置
- 如何找到系统的usr目录
- frameset网页框架布局模式