4.单链表查找接点并删除

原创 2012年03月24日 00:07:39
#include <cstdlib>
#include <iostream>

using namespace std;

//定义单链表的接点
typedef struct Node{
        int data;
        struct Node * next;
        }Nodes; 
        
        //创建链表  头插法
void createListHead(Node * &node ,int data[],int length){
       Node * q;//指向新创建的接点
       
       //创建头结点
     node=(Node *)malloc(sizeof(Node));
     node->next=NULL;
     
      int i;
     for(i=length;i>=1;i--){
             q=(Node *)malloc(sizeof(Node));
             q->data=data[i];
             q->next=node->next;
             node->next=q;
           }     
     } 
 
//遍历单链表
void showList(Node * node){
     Node * p;//指向当前遍历的接点
     if(node!=NULL)
     p=node->next;
     while(p!=NULL){
             printf("%d-->",p->data);
             p=p->next;
             } 
     } 
//查找接点并删除 成功返回1  失败返回0
int deleteNode(Node * &node ,int x){
    Node * p, *q;
  
    p=node;
    while(p->next!=NULL){//查找位置 
            if(p->next->data==x) break;
            p=p->next;
            } 
    //删除 
    if(p->next==NULL){
         return 0;//没有查找到 
         } 
     else{
          q=p->next;
          p->next=p->next->next;
          free(q);
          return 1;
          }    
    } 

int main(int argc, char *argv[])
{
    Node * node=NULL;
      int data[11];
    int i;
    for(i=1;i<=10;i++){
                  data[i]=i*i  ;         
                      }
    createListHead(node ,data,10);
    showList(node);
     deleteNode(node ,64);
     
     printf("\n");
    showList(node);
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

单链表的插入,查找,删除

链表是一种重要的数据结构,相比于数组,数组更像是一个顺序表,数组只要第一个元素固定,那么在他后面的元素的地址一定固定,数组在内存中是一块连续的存储区域,我们可以根据下标找到他的每个元素,这是数组和链表...

单链表的查找、删除、插入!

#include #include #include #include using namespace std; typedef  int Status; typedef struct...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

每天一道算法题(4)——O(1)时间内删除链表节点

1.思路         假设链表......---A--B--C--D....,要删除B。一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n)。删除节点的实质为更改后驱指针指向。这里,复制C...

删除链表节点

wentimia

单链表的创建及操作

1、单链表的结构体算法: typedef char elemtype; typedef struct node { elemtype data;           //数据域 struct node...

删除单链表某个结点

题目:删除带头结点的单链表L中的结点p,p不是最后一个结点,要求时间复杂度为O(1)。 解题思路: 如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。 现在要求时间复杂度...

Lintcode 在O(1)时间复杂度删除链表节点

1.描述 给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。 样例 给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1-...

单链表某一元素的删除

为啥总是犯十分智障的错误!!!错误代码:#include #include //删除元素 typedef struct LNode{ int data; LNode *next; ...

创建单链表,求链表长度、查找、插入、删除、合并。

#include #include   //单链表的结点定义 typedef int DataType; typedef struct Node { DataType data; st...

剑指offer10--O(1)的时间实现单链表节点的删除

单链表的删除操作
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)