链表常见操作算法
来源:互联网 发布:打工软件哪个好 编辑:程序博客网 时间:2024/05/16 14:21
链表常见操作算法
1. 单链表的逆置
node *Reverse(node *Head){node *p1,*p2,*p3;if(head == NULL || head->next == NULL){return head;}p1 = head,p2 = p1->next;while(p2){p3 = p2->next;p2->next = p1;// 指针域反转p1 = p2;// 遍历调整p2 = p3;}head->next = NULL;head = p1;return head;}
node *Sort(node *Head){node *p, *p2,*p3;int n = length(Head);// 得到链表长度int temp;if(head = NULL || head->next == NULL){return head;}p = head;for(int j = 1; j < n; ++ j){p = Head;for(int i = 0; i < n - j; ++ i){if( p->data > p->next->data ){temp = p->data;p->data = p->next->data;p->next->data = temp;}p = p->next;}}return head;}
3. 链表的插入(自动排序)
node *Insert_Sort(node *Head, int num){node *p0, *p1, *p2;p1 = Head;p0 = (node *)malloc( sizeof(node) );p0->data = num;while( (p0->data > p1->data) && (p1->next != NULL) ){p2 = p1;p1 = p1->next;}if( p0->data <= p1->data ){if(Head == p1)// 插在头结点之前{p0->next = p1;Head = p0;}else// 调整指域{p2->next = p0;p0->next = p1;}}else{p1->next = p0;p0->next = NULL;}return (Head);}
4. 链表结点删除
node *Delete_Node(node *Head, int num){node *p1,*p2;p1 = Head;while(num != p1->data && p1->next != NULL){p2 = p1;p1 = p1->next;}if(num == p1->data){if(Head == p1){Head = p1->next;free(p1);}elsep2->next = p1->next;}elseprintf("Can't find node->num!'");return Head;return (Head);}
0 0
- 链表常见操作算法
- 链表常见操作
- 常见链表操作
- 链表常见操作
- 常见链表算法
- 链表常见操作练习
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 链表的常见操作
- 飞行器的姿态概念
- C语言头文件的作用
- 嵌入式linux串口应用编程(上)
- alias用法
- POJ1236 Network of Schools 【强连通分量Garbow】
- 链表常见操作算法
- 如何实现多个接口Implementing Multiple Interface
- Java创建线程安全的方法
- 黑马程序员——java.lang.Process和java.lang.ProcessBuilder
- java字符串常量池知识
- 联想杨元庆:互联网不包治百病 概念被夸大
- 命令行之2048
- Jenkins salve Windows7配置
- shell编程三大神器之grep