list_链表的常用操作
来源:互联网 发布:淘宝怎么退货怎么邮寄 编辑:程序博客网 时间:2024/05/18 04:20
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; //数据域 struct Node * pNext; //指针域}NODE,*PNODE; //NODE等价于struct Node, PNODE等价于struct Node *//函数声明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, int, int);bool delete_list(PNODE, int, int *);int main(void){ PNODE pHead = NULL; pHead = create_list(); //create_list()功能:创建一个非循环单链表,并将该链表的头节点的地址赋给pHead traverse_list(pHead); insert_list(pHead,4,33); traverse_list(pHead);// int len = length_list(pHead);// printf("链表的长度是:%d\n",len);// sort_list(pHead);// traverse_list(pHead);/* if (is_empty(pHead)) { printf("链表为空!\n"); }else{ printf("链表不空!\n"); }*/ return 0;}PNODE create_list(void){ int i; int len; //用来存放有效节点的个数 int val; //用来临时存放用户输入的节点的值 //分配了一个不存放有效数据的头节点 PNODE pHead = (PNODE)malloc(sizeof(NODE)); if (NULL == pHead) { printf("分配失败,程序终止!\n"); exit(-1); } PNODE pTail = pHead; pTail->pNext = NULL; printf("请输入您要生产的链表节点的个数:len = "); scanf("%d",&len); for (i=0; i<len; ++i) { printf("请输入第%d个节点的值:",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if (NULL == pNew) { printf("分配失败,程序终止!\n"); exit(-1); } pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; //pnew指针域置NULL pTail = pNew; } return pHead;}void traverse_list(PNODE pHead){ PNODE p = pHead->pNext; while (NULL != p) { printf("%d ",p->data); p = p->pNext; } printf("\n"); 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 len = 0; while(NULL != p) { ++len; p = p->pNext; } return len;}void sort_list(PNODE pHead){ int i,j,tmp; int len = length_list(pHead); PNODE p ,q; for (i=0,p=pHead->pNext; i<len-1; ++i,p=p->pNext) { for (j=i+1,q=p->pNext; j<len; ++j,q=q->pNext) { if (p->data > q->data) //类似于数组中的:a[i] > a[j] { tmp = p->data; //类似于数组中的:tmp = a[i]; p->data = q->data; //类似于数组中的:a[i] = a[j]; q->data = tmp; //类似于数组中的:a[j] = tmp; } } } return;}//在pHead所指向链表的第pos个节点的前面插入一个新节点,该节点值为valbool 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("动态内存分配失败!\n"); exit(-1); } pNew->data = val; PNODE q = p->pNext; p->pNext = pNew; pNew->pNext = q; return true;}
0 0
- list_链表的常用操作
- LIST_找出链表的共同后缀
- 链表的归并排序:来自STL_ list_ sort 算法
- leetcode_效率题解_148. Sort List_(链表归并排序)
- 链表的常用操作
- 链表的常用操作
- LIST_求链表中倒数第K个结点的值
- 表的常用操作
- 链表的常用操作(java实现)
- 常用链表操作
- 链表常用操作
- 表空间的常用操作
- 操作表常用的sql
- list_随时记
- python_5(list_列表)
- LIST_数组右移
- 常用链表操作算法
- 链表常用操作的实现-C++模板实现
- (译)KVO的内部实现
- 50 Pow(x, n)
- Hadoop 数据类型
- 服务计算 SO 服务的设计
- the macro # and ## (typing...)
- list_链表的常用操作
- php自己实现memcached的队列类
- CSS Animation初探
- 对于restful的简单认识
- 100 事件 [~IE8] 用数组来保存传统事件 通过数组来实现按顺序执行
- 黑马程序员--Java之内部类06
- 陈怡暖:2015.5.4(午夜金评)远离套单危险
- 人脸识别
- 使用git error: RPC failed; result=22, HTTP code = 411