单链表的复制

来源:互联网 发布:java教学视频高清 编辑:程序博客网 时间:2024/06/14 01:37
#include <iostream>using namespace std;typedef struct Node{double val;Node *next;}node;node* mycreat(double n){node *head=NULL,*p=NULL,*sec=NULL;head=(node*)malloc(sizeof(node));p=head;while(n--){double v;cin>>v;sec=(node*)malloc(sizeof(node));sec->val=v;p->next=sec;p=sec;}p->next=NULL;return head;}void myprint(node *head){double f=0;node *p=NULL;p=head->next;while(p!=NULL){if(f==0) cout<<p->val;else cout<<" "<<p->val;p=p->next;f++;}cout<<endl;}node* copmycreat(node *head,double n)//copy函数{node *p=NULL;node *cophead=NULL,*copp=NULL,*copsec=NULL;cophead=(node*)malloc(sizeof(node));copp=cophead;p=head->next;//p由头指针下一个开始while(n--){copsec=(node*)malloc(sizeof(node));copsec->val=p->val;//取p指针的值赋给coppcopp->next=copsec;copp=copsec;p=p->next;}copp->next=NULL;return cophead;//完成复制}void del(node *p){node *q=NULL;while(p!=NULL){q=p;p=p->next;delete q;}}int main(){node *head,*cophead;double n;while(cin>>n){head=new node;cophead=new node;if(n==0) break;        head=mycreat(n);cophead=copmycreat(head,n);myprint(cophead);del(head);del(cophead);}return 0;}

原创粉丝点击