版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haimianjie2012/article/details/83417857
3.编写一个函数将一个头结点指针为La的单链表A分解为两个单链表A和B,其头结点分别为La和Lb,其中A链表中含有A中序号为奇数的元素,而B链表中含有原链表A中序号为偶数的元素,且保持原来的相对顺序,该链表结点如下图所示。(6分)
4.设有一颗二叉树以二叉链表作为存储结构,结点结构为下图所示,试写出复制一颗二叉树的算法。设原来的二叉树跟为t,复制的二叉树跟为bt。
3.编写一个函数将一个头结点指针为La的单链表A分解为两个单链表A和B,其头结点分别为La和Lb,其中A链表中含有A中序号为奇数的元素,而B链表中含有原链表A中序号为偶数的元素,且保持原来的相对顺序,该链表结点如下图所示。(6分)
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
链表A中结点按序号的奇偶性分解到表A或表B中
//链表A中结点按序号的奇偶性分解到表A或表B中
LNode* SeparateLNode(LNode* La)
{
LNode* Lb;
//记录表A中结点的序号
int m_num=0;
Lb=(LNode*)malloc(sizeof(LNode));
Lb->next=NULL;
//paTail,pbTail分别指向创建的La和Lb的尾结点
LNode *paTail,*pbTail,*pCur;
paTail=La;
pbTail=Lb;
pCur=La->next;
La->next=NULL;
while(pCur!=NULL)
{
m_num++;
if (m_num%2==0)
{
pbTail->next=pCur;
pbTail=pCur;
}
else
{
paTail->next=pCur;
pbTail=pCur;
}
pCur=pCur->next;
}//while
paTail->next=NULL;
pbTail->next=NULL;
return Lb;
}
4.设有一颗二叉树以二叉链表作为存储结构,结点结构为下图所示,试写出复制一颗二叉树的算法。设原来的二叉树跟为t,复制的二叉树跟为bt。
二叉树结构:
typedef struct BTNode{
int data;
struct BTNode *lchild,*rchild;
}BTNode;
复制二叉树:
BTNode* CopyTree(BTNode* t)
{
BTNode* bt;
if (t==NULL)
{
bt=NULL;
}
else
{
bt=(BTNode*)malloc(sizeof(BTNode));
bt->data=t->data;
bt->lchild=CopyTree(t->lchild);
bt->rchild=CopyTree(t->rchild);
}
return bt;
}