首页 > 学院 > 开发设计 > 正文

循环单链表的合并

2019-11-14 09:27:45
字体:
来源:转载
供稿:网友

代码示例

/* function:循环单链表的合并 created by : xilong date: 2017.2.5*/#include "iostream"using namespace std;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef double ElemType;typedef int Status;typedef struct Node{ ElemType data; struct Node* next;}Node;typedef struct Node* CLinkList;/* 功能:初始化*/CLinkList CLinkList_Init(){ CLinkList head; head = (CLinkList)malloc(sizeof(CLinkList)); head->next = head; // 循环空链表 return head;}/* 功能:尾插法创建循环单链表*/void CLinkList_CreateFormTail(CLinkList *head){ CLinkList p, s; p = *head; double data; int flag = 1; while (flag) { cin >> data; if (data != -99999) { s = (CLinkList)malloc(sizeof(CLinkList)); s->data = data; p->next = s; s->next = *head; p = s; } else { flag = 0; p->next = *head; } }}/* 功能:合并两个循环链表*/CLinkList CLinkList_merge(CLinkList *LA, CLinkList *LB){ CLinkList p1, p2; p1 = *LA; p2 = *LB; if (p1->next == p1) // 如果第一个链表为空,就直接返回第二个链表的头结点 { return *LB; } if (p2->next == p2) // 如果第二个链表为空,返回第一个链表头结点 { return *LA; } while (p1->next != (*LA)) // 找到表LA的表尾,用p1指向它 { p1 = p1->next; } while (p2->next != (*LB)) // 找到表LB的表尾,用p2指向它 { p2 = p2->next; } p2->next = *LA; // 修改表LB的尾指针,使之指向表LA的头结点 p1->next = (*LB)->next; // 修改表LA的尾指针,使之指向表LB中的第一个结点 free(*LB); return *LA; // 返回表LA的头结点}/* 功能:打印链表数据*/Status CLinkList_PRint(CLinkList *head){ CLinkList p; p = (*head)->next; if ((*head)->next == (*head)) { cout << "空链表!" << endl; return ERROR; } while (p != (*head)) { cout << p->data << " "; p = p->next; } cout << endl; return OK;}void main(){ CLinkList LA, LB, LAB; cout << "LA链表的初始化以及创建:(输入-99999结束)" << endl; LA = CLinkList_Init(); CLinkList_CreateFormTail(&LA); cout << "打印LA链表数据:"; CLinkList_Print(&LA); cout << "LB链表的初始化以及创建:(输入-99999结束)" << endl; LB = CLinkList_Init(); CLinkList_CreateFormTail(&LB); cout << "打印LB链表数据:"; CLinkList_Print(&LB); LAB = CLinkList_merge(&LA, &LB); cout << "打印合并后的链表:"; CLinkList_Print(&LAB); cout << "插入数据,输入插入位置:"; system("pause");}

程序截图

这里写图片描述

说明

  有关循环单链表的删除,查找等操作,在前几篇文章都有完整的代码示例和程序截图。   单链表的基本操作:http://blog.csdn.net/xilong_666/article/details/54865927


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表