单链表操作

来源:互联网 发布:阿里云免费体验邀请码 编辑:程序博客网 时间:2024/05/01 10:22
#include<iostream>using namespace std;typedef struct Node{int val;Node *next;}node;node* mycreat(int n){node *head=NULL,*p=NULL,*sec=NULL;head=(node*)malloc(sizeof(node));p=head;while(n--){int v;scanf("%d",&v);sec=(node*)malloc(sizeof(node));        sec->val=v;p->next=sec;p=sec;}p->next=NULL;return head;}void myprint(node *head){node *p=NULL;p=head->next;while(p!=NULL){printf("%d ",p->val);p=p->next;}printf("\n");return;}node* mydel(node *head,int d){node *p=NULL,*q=NULL;q=head;//q为主线p=head->next;//p动态查找要删除的值while(p!=NULL){if (p->val==d){q->next=p->next;//找到的时候主线q跳过pdelete p;p=q->next;//动态p重新连上主线q,p始终为q下一个}else{q=q->next;//没找到正常往下走p=p->next;}}return head;}void del(node *p){node *q=NULL;while(p!=NULL){q=p;p=p->next;delete q;}}int main(){int n;node *head=NULL;while(~scanf("%d",&n)){if(n==0) break;head=mycreat(n);int d;scanf("%d",&d);myprint(head);head=mydel(head,d);myprint(head);del(head);}return 0;}

原创粉丝点击