C/C++ | 28-20 写出程序删除链表中的所有节点
2017-07-27 18:43
302 查看
/* 删除所有链表的节点 */ #include <cstdio> #include <deque> #include <algorithm> #include <iterator> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <assert.h> using namespace std; typedef struct LNode { int data; struct LNode *next; }LNode; LNode *CreatLink(int num) // 构造 { int i=1; LNode *head, *tail, *p; head = (LNode *)malloc(sizeof(LNode)); tail = head; while (num--) { p = (LNode *)malloc(sizeof(LNode)); p->data = i; tail->next = p; tail = p; i++; } tail->next = NULL; return head; } LNode *FindLink(LNode *head,int X) //查找 { assert( head != NULL); LNode *chick=head->next; while (chick != NULL) { if (chick->data == X) return chick; else chick = chick->next; } return NULL; } void DeleteLink(LNode *head, int X) //删除 { assert(head != NULL); LNode *p; LNode *q; p=FindLink(head, X); q = p->next; p->data = q->data; p->next = q->next; free(q); } void DeleteAllLink(LNode *head) { assert(head != NULL); LNode *p ; while (head!=NULL) { p = head->next; free(head); head = p; } cout << "all Linked Deleted!" << endl; //在这里head已为NULL } int main() { LNode *head = CreatLink(50); DeleteLink(head, 5); DeleteAllLink(head); system("pause");//这里head随机给值了 return 0; }
相关文章推荐
- [笔试题 7][c/c++]删除两个双向链表中相同元素的所有节点
- 在带头节点的单链表中,删除所有值为x的节点(Java实现)
- 删除链表中等于给定值val的所有节点
- LintCode 删除链表中等于给定值val的所有节点
- 日常联系:一个C++程序完成链表的增加结点、删除结点、打印、查询、逆序等操作
- 删除链表中等于给定值val的所有节点
- 删除排序链表的所有重复节点
- 372. 在O(1)时间复杂度删除链表节点 (delete-node-in-the-middle-of-singly-linked-list)(c++)----lintcode面试题之链表
- 坚持坚持!用Java写出删除一个链表的倒数第N个节点,并返回头节点(N总是可达的)
- 删除链表中等于给定值val的所有节点。
- 删除链表中倒数第n个节点 - C++
- 左神的书——《程序员代码面试指南》之删除链表的倒数第k个节点 c++实现
- 双向循环链表删除算法的C++程序实现
- C++单向链表之删除节点
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
- C++删除链表中间节点的方法
- 带头节点的单链表删除 - c++
- 删除两个双向链表中相同元素的所有节点
- 删除链表中等于给定值val的所有节点