资讯详情

王道书P40 T13(单链表实现)

/**  * 用链表实现 王道P40 T13  *  * ①算法思想:  * 首先,将两个递增链表合并为递增链表,  * 然后断链头插逆置。  *  *  * ②数据结构:  * typedef struct LNode{  *      int data;  *      struct LNode *next;  * }LNode,*LinkList;  *  * ③算法设计  */   #include <stdio.h> #include <iostream>  typedef struct LNode{     int data;     struct LNode *next; }LNode,*LinkList;   LinkList MinIncreasingRe(LinkList &L1,LinkList &L2){     LinkList p = L1 -> next,q = L2 -> next,r = L1;     while(p && q){         if(p -> data > q -> data){             r -> next = q;             r = q;             q = q -> next;         }else{             r -> next = p;             r = p;             p = p -> next;         }     }     while(p){         r -> next = p;         r = p;         p = p -> next;     }     while(q){         r -> next = q;         r = q;         q = q -> next;     }     r -> next = NULL;     p = L1 -> next;     L1 -> next = NULL;     while(p){         q = p -> next; //注意 q 要写到 while 里面,而不能在 while 外面定义 q = p -> next;          p -> next = L1 -> next;         L1 -> next = p;         p = q;     }     return L1; }   以下是测试程序 尾插法建立单链表(有头节点) LinkList CreatLinkListR(){     LinkList L = (LinkList)malloc(sizeof(LNode));//创建头结点,头指针L指向头节点     LinkList p = L,q;     这里不必让 L -> next 指向空,因为L保存了头结点指针,尾插一定会在L后插入一个新节点,所以L后面肯定会有节点而不是空,     //p用于保存尾节点指针,因此应允许 p -> next 为空。     int data;     while(1){         scanf("%d",&data);         if(data == 99999)             break;         q = (LinkList)malloc(sizeof(LNode));         q -> data = data;         p -> next = q;         p = q;     }     p -> next = NULL;     return L; }  循环单链表的遍历(有头节点,无头结点) 引入带头结点 L -> next ,传入无头结点 L LinkList Order(LinkList L){     while(L){//当L不是空的时候         printf("%d ",L -> data);         L = L -> next;     }     printf("\n"); }   int main(){     LinkList L1 = CreatLinkListR();     LinkList L2 = CreatLinkListR();     Order(L1 -> next);     Order(L2 -> next);     MinIncreasingRe(L1,L2);     Order(L1 -> next); } 

标签: 圆形连接器插p40j9q

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台