1.输入10个数,找最大和逆序存储。(链表遍历和链表前插法)
2.输入字符串是否符合anbncn(aabbcc)#为终止符。(链串,先求链长count,count是否可以整除3,求连续的a个数和连续的a的最后一个的下一个是b,求连续的b个数和连续的b的最后一个的下一个是c,看a的个数加b的个数加c的个数等于count,看a个数是否等于b个数,看a个数是否等于c个数,看b个数是否等于c个数)
3.输入个数n,在由小到大输入n个数,输入需删除下界mink,需删除上界maxk,输出删除前和删除后结果。(链表尾插法,多删,遍历输出)
p=L;
while(p->next)
{
if(p->next->data<mink)
p=p->next;
if(p->next->data>maxk)
break;
else
{
q=p->next;
p->next=q->next;
delete q;
}
}
4.输入字符串先需创建树,中序输出树,最近的公共祖先节点。(DLR创建树,LDR遍历树,链表求交)
#include
using namespace std;
typedef struct TNode
{
char c;
struct TNode *lchild;
struct TNode *rchild;
struct TNode *parent;
}TNode,*Tree;
void createDLR(Tree &T,Tree Tparent)
{
char ch;
cin>>ch;
if(ch==’#’)
T=NULL;
else
{
T=new TNode;
T->c=ch;
T->parent=Tparent;
createDLR(T->lchild,T);
createDLR(T->rchild,T);
}
}
void OutputLDR(Tree T)
{
if(!T)
return;
else
{
OutputLDR(T->lchild);
cout<c;
OutputLDR(T->rchild);
}
}
void CHA(Tree T,char c,Tree &C)
{
if(T)
{
if(c!=T->c)
{
CHA(T->lchild,c,C);
CHA(T->rchild,c,C);
}
else C=T;
}
}
void LCA(Tree U,Tree V)
{
Tree pu=U;
Tree pv;
int k=0;
while(pu)
{
pv=V;
while(pv)
{
If(pu->c!=pv->c)
pv=pv->parent;
else
{
cout<c;
k=1;
break;
}
}
If(k==1)
break;
else pu=pu->parent;
}
}
int main()
{
Tree T;
createDLR(T,NULL);
OutputLDR(T);
cout<<endl;
char u,v;
cin>>u>>v;
Tree U,V;
CHA(T,u,U);
CHA(T,v,V);
LCA(U,V);
return 0;
}
相关文章
- 12-04数据结构学习——顺序栈和链式栈的简单实现和解析(C语言版)
- 12-04一道面试题的简单思考
- 12-04《wireshark网络分析就这么简单》第一个试题的分析
- 12-04美团点评的几道笔试题
- 12-04几道简单的链表题
- 12-04[数据结构]栈和队列的几个简单OJ(括号匹配问题,用队列实现栈,用栈实现队列,设计循环队列)
- 12-04c语言关于char类型的几道面试题
- 12-04简单的数据结构
- 12-04几道简单的数据结构试题
- 12-04面试题57 - II. 和为s的连续正数序列(简单题)