/**
* 用链表实现 王道P40 T11
*
* ①算法思想:
* 设置 int 型变量 count 用来判断hc序号的奇偶性,
* 如果是奇数,就用尾插的方式放入A中,如果是偶数,就用头插的方式放入B中。
*
* ②数据结构:
* 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;
void SplitABFromHC(LinkList &hc,LinkList &A,LinkList &B){//默认 A 与 B 有头节点
LinkList p = hc -> next,q,r = A;//r用于A的尾插
B -> next =NULL;
int count = 1;
while(p){
q = p -> next;//q 保存 p 的下一个
if(count % 2 != 0){
r -> next = p;
r = p;
}else{
p -> next = B -> next;
B -> next = p;
}
count ++;
p = q;
}
r -> next = NULL;
}
//以下为测试程序
//尾插法建立单链表(有头节点)
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;
}
王道书P40 T11(单链表实现)
于 2022-07-12 16:21:48 首次发布