博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链式有序表的合并
阅读量:6293 次
发布时间:2019-06-22

本文共 3297 字,大约阅读时间需要 10 分钟。

又接着看了链式有序表的合并๑乛◡乛๑

head.h头文件——包含了 各种声明还有结构体定义

#ifndef HEAD_H_INCLUDED#define HEAD_H_INCLUDED#define ElemType int#define Status inttypedef struct Node{    ElemType data;    struct Node *next;}Node,*pNode;Status InitList(pNode &h);    //初始化链表Status GetElem(pNode L,int i,ElemType e);    //取值Node *LocateElem(pNode L,ElemType e);        //查找Status ListInsert(pNode L,int i,ElemType e); //插入Status ListDelete(pNode L,int i);            //删除void output(pNode h);                        //打印pNode creat_h(int n);                        //创建pNode creat_r(int n);                        //创建#endif // HEAD_H_INCLUDED

合并功能函数(单独拿出来的啦๑乛◡乛๑)

void MergeList(pNode &A,pNode &B,pNode &C){    pNode pa,pb,pc;    pa=A->next;pb=B->next;   //pa和pb的初值分别指向两个表的第一个结点    C=A;                     //用A的头结点作为C的头结点    pc=C;                    //pc指向C的头结点    while(pa&&pb)    {//A和B均未达到表尾,则依次“摘取”两表中较小的结点插入到C的最后        if(pa->data <= pb->data)        {            pc->next=pa;            pc=pc->next;            pa=pa->next;        }        else        {            pc->next=pb;            pc=pc->next;            pb=pb->next;        }    }    pc->next=pa? pa:pb;      //将非空表的剩余段插入到pc所指结点之后    delete B;}
main.c文件

#include 
#include "head.h"using namespace std;void MergeList(pNode &A,pNode &B,pNode &C);int main(){ int n; pNode A,B,C; cout<<"input n data of A:"; cin>>n; A=creat_r(n); cout<<"input n data of B:"; cin>>n; B=creat_r(n); InitList(C); MergeList(A,B,C); output(C); return 0;}void MergeList(pNode &A,pNode &B,pNode &C){ pNode pa,pb,pc; pa=A->next;pb=B->next; C=A; pc=C; while(pa&&pb) { if(pa->data <= pb->data) { pc->next=pa; pc=pc->next; pa=pa->next; } else { pc->next=pb; pc=pc->next; pb=pb->next; } } pc->next=pa? pa:pb; delete B;}Status InitList(pNode &h) //初始化{ h=new Node; h->next=NULL; return 1;}Status GetElem(pNode L,int i,ElemType e) //取值{ pNode p=L->next; int j=1; while(p&&j
next; j++; } if(!p||j>i) return -1; e=p->data; return 1;}Node *LocateElem(pNode L,ElemType e) //查找{ pNode p=L->next; while(p&&p->data!=e) p=p->next; return p;}Status ListInsert(pNode L,int i,ElemType e) //插入{ pNode p=L; int j=0; while(p&&j
next; j++; } if(!p||j>i-1) return -1; pNode q=new Node; q->data=e; q->next=p->next; p->next=q; return 1;}Status ListDelete(pNode L,int i) //删除{ pNode p=L; int j=0; while(p->next&&j
next; j++; } if(!p->next||j>i-1) return -1; pNode q=p->next; p->next=p->next->next; delete q; return 1;}pNode creat_h(int n) //创建-头插法{ pNode L; L=new Node; L->next=NULL; for(int i=0;i
>p->data; p->next=L->next; L->next=p; } return L;}pNode creat_r(int n) //创建-尾插法{ pNode h,q,p; h=q=new Node; h->next=NULL; for(int i=0;i
next=NULL; cin>>p->data; q->next=p; q=q->next; } return h;}void output(pNode h) //打印链表{ pNode p=h->next; cout<<"打印链表:"; while(p) { cout<
data<<" "; p=p->next; }}

转载于:https://www.cnblogs.com/zhanyeye/p/9746130.html

你可能感兴趣的文章
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>