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

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值