《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-1.docx》由会员分享,可在线阅读,更多相关《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-1.docx(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ttinclude 件include using namespace std;函数结果状态代码Mefine OK 14define ERROR 0/define OVERFLOW -2 /Status是函数的返回值类型,其值是函数结果状态代码 typedef int Status;结点的数据域结点的指针域/LinkList为指向结构体LNode的指结点的数据域结点的指针域/LinkList为指向结构体LNode的指typedef struct LNode (int data;struct LNode *next;LNode, *LinkList;针类型Status InitList (Link
2、List &L);/初始化Status DestroyList (LinkList &L);销毁链表void CreateList_R (LinkList &Lf int L_Data , int n);/后插法创立单链表void MergeList (LinkList &LA, LinkList iLB, LinkList &LC) ; /合并void PrintList (LinkList L);/输出锥表int main() ( int laData(=3Z5,8,11); int lbData=2/6,8/9,ll,15,20); LinkList la, lb; InitList(l
3、a); InitList(lb);CreateList_R(la,laData,sizeof(laData)/sizeof(laData0); CreateList_R(lb,IbData,sizeof(IbData)/sizeof(IbDaca0);LinkList 1c;InitList(1c);MergeList(la,lb,1c);coutnext=NULL;头结点的指针域置空return OK; 箱毁链表 Status DestroyList(LinkList &L) ( while(L) ( LNode *p=L;释放空间L=L-next; delete p;return OK;
4、后插法创立单链表/尾指针r指向头结点void CreateList_R(LinkList &L,int L_Data,int n) /正位序输入n个/素的值,建立带表头结点M单链表LLNode *r = L;for (int i=0;idata=L_Datai; p-next NULL; r-next-p; r=p;LNode *p=new LNode; p-data=L_Datai; p-next NULL; r-next-p; r=p;生成新结点/初始化p的数据域为L_Data i 将新结点*插入尾结1”之后 /r指向新的尾结点*p输出链表void PrintList(LinkList L
5、) (LNode *pL;coutnext;while(p) (cout p-data; p=p-next;coutendl;/合并void MergeList(LinkList iLa,LinkList &Lb,LinkList &Lc) 将两个递增的有序链表La和Lb合并为一个递增的有序链表LcLNode *pa=La-next;/pa是链表La的工作指针,初始化为首元结点LNode *pb=Lb-next;pb是链表Lb的工作指针,初始化为首元结点/pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的首元结点 Lc=La; LNode *pc=La;/用La的头结点作为Lc的头结
6、点while (paiipb)/两个链表La和Lb均未到达表尾结点( if(pa-datadata) 取较小者La中的元素,将pa链接在pc的后面,pa指针后移 pc-next=pa;pc=pa;pa=pa-next;)else if (pa-datapb-data)(取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移 pc-next=pb;pc=pb;pb=pb-next;)else(相等时取La中的元素,删除Lb中的元素pc-next=pa;pc=pa;pa=pa-next;LNode *q=pb-next;delete pb; pb=q;)将非空表的剌余元素直接链接在Lc表的最后 释放Lb的头结点pc-next=pa?pa:pb;delete Lb;输出结果:合并后的线性表为:None 2 3 5 6 8 9 11 15 20