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

来源:互联网 发布:win32编程 视频 编辑:程序博客网 时间:2024/04/28 21:43
#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  失败返回0int 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;}