删除单向链表中的某一个节点
2013-04-05 22:33
274 查看
已知一个单向链表的表头head,写出一个删除某一个节点的算法,要求先找到此节点,然后删除。
运行结果:
原链表数据:
1 2 3 4 5 6 7 8 9
输入要删除的数据:6
删除一个6之后的链表数据:
1 2 3 4 5 7 8 9
#include<iostream> using namespace std; typedef struct node { int number; struct node *next; }Node; Node *Delete(Node *head,int key) { Node *node1=head; Node *node2=NULL; if (head==NULL) { return NULL; } else { if (node1->number==key) { head=head->next; free(node1); return head; } else { while (node1!=NULL) { node2=node1; node2=node2->next; if (node2->number==key) { node1->next=node2->next; free(node2); break; } node1=node1->next; } return head; } } } int main() { Node *head=(Node*)malloc(sizeof(Node)); Node *p,*q,*q1; int key; p=(Node*)malloc(sizeof(Node)); q1=q=head; int i; for (i=1;i<10;i++) { p->number=i; head->next=p; head=p; p=(Node*)malloc(sizeof(Node)); } head->next=NULL; cout<<"原链表数据: "<<endl; q1=q1->next; while (q1!=NULL) { cout<<q1->number<<" "; q1=q1->next; } cout<<endl; cout<<"输入要删除的数据:"; cin>>key; p=Delete(q->next,key); cout<<"删除一个"<<key<<"之后的链表数据: "<<endl; while (p!=NULL) { cout<<p->number<<" "; p=p->next; } cout<<endl; free(p); free(head); return 0; }
运行结果:
原链表数据:
1 2 3 4 5 6 7 8 9
输入要删除的数据:6
删除一个6之后的链表数据:
1 2 3 4 5 7 8 9
相关文章推荐
- 删除单向链表中的某一个节点
- 13:在O(1)时间内删除单向链表中的一个节点
- O(1)时间内删除单向链表中的一个节点
- 一个单向链表,不知道头节点,一个指针指向其中一个节点,问如何删除这个指针指向的节点?
- 单向链表在O(1)时间内删除一个节点
- 一个单向链表,只知道某个节点的指针p,但是p不是尾节点,请编程删除节点p.
- 单向链表在O(1)时间内删除一个节点
- 1.01一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
- 今天开始学Java 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
- 给定一个单向链表,目前已经有一个指针,指向某一个节点(记作A),现在要删除这个节点A,如何操作。
- 在单向链表中如何快速查到倒数第n个节点 这简直是一种神奇的思路!!!!leetcode 删除倒数第n个节点
- 【leetcode】删除单向链表的节点
- 在O(1)的时间内删除链表的一个节点
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置
- 9.2链表(三)——删除单向链表中间的某个节点,假定你只能访问该节点
- 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
- 华为OJ——从单向链表中删除指定值的节点
- 从单向链表中删除指定值的节点
- 只知道某个单向链表的中的某个指针,且该指针不是尾指针,如何删除该节点。
- 删除单向链表的指定节点