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