单链表的复制——C++实现
2015-10-12 20:33
471 查看
#include<iostream> #include<malloc.h> using namespace std; typedef int DataType; /*定义链表数据结构*/ typedef struct node{ DataType data; struct node * next; }LNode,* LinkList; int main(){ /*函数声明*/ LinkList Tail_Create_LinkList(); LinkList CCopy_LinkList(LinkList H); void Show(LinkList H); LinkList H=Tail_Create_LinkList();//创建单链表 cout<<"输出顺序表为:"; Show(H); LinkList G=CCopy_LinkList(H);//复制单链表 cout<<"\n\n输出复制的顺序表为:"; Show(G); return 0; } /*尾插法-创建链表*/ LinkList Tail_Create_LinkList(){ /*建一个空表*/ LinkList H; H=(LinkList)malloc(sizeof(LNode)); if(!H){ cout<<"申请空间失败!"; return 0; } H->next=NULL; cout<<"输入单链表元素(负数结束):"; LinkList p,r; p=r=(LinkList)malloc(sizeof(LNode));//利用malloc ( )函数向系统申请分配一个节点 cin>>p->data;//输入节点的值 p->next=NULL;//将新节点的指针置为空 while(p->data>=0){//输入节点的数值大于0 if(!H->next) H->next=p;//空表,接入表头 else r->next=p;//非空,接入表尾 r=p; p=(LinkList)malloc(sizeof(LNode));//下一个新节点 cin>>p->data; p->next=NULL; } return H;//返回链表的头指针 } /*单链表的复制*/ LinkList CCopy_LinkList(LinkList H){ LinkList G; G=(LinkList)malloc(sizeof(LNode)); if(!G){ cout<<"申请空间失败!"; return 0; } G->next=NULL; LinkList p,r,h=H->next; r=(LinkList)malloc(sizeof(LNode));//利用malloc ( )函数向系统申请分配一个节点 while(h){ p=(LinkList)malloc(sizeof(LNode));//下一个新节点 p->data=h->data; p->next=NULL; if(!G->next) G->next=p;//空表,接入表头 else r->next=p;//非空,接入表尾 r=p; h=h->next;//再取链表的下一个节点 } return G; } /*输出链表*/ void Show(LinkList H){ LinkList p=H->next;//取得链表第一个元素的指针 while(p){//只要是非空表 cout<<p->data<<" ";//输出链表节点的值 p=p->next;//跟踪链表增长 } }
相关文章推荐
- android 代码实现控件之间的间距
- [Android]在代码里运行另一个程序的方法
- 肯特·贝克:改变人生的代码整理魔法
- 网页恶意代码的预防
- 动易2006序列号破解算法公布
- 高手写的Tracer-Flash代码调试类代码下载
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- Ruby实现的矩阵连乘算法
- CreateWeb.vbs 代码
- C#插入法排序算法实例分析
- Lua中编译执行代码相关的函数详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构揭秘一
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题