求助大神数据结构算法题!谢谢谢谢! 数据结构怎样由中缀算式
数据结构 急求算法! 谢谢大神咯
#includestdioh#includestdlibh#includemalloch#includeiostreamh #define elem int#define M 10typedef struct node{ elem data; struct node *next;}no;//以下单链表均带头节点//1int f1(no *L,elem x){ int i=0; L=L-next; while(L) { if(L-data==x) i++; L=L-next; } return i;}//2算法复杂度为O(N)void f2(no *L,int k1,int k2){ if(k1=k2) no *p=L,*q; L=L-next; while(L) { if(L-datak1) break; p=L;//记住删除第1个结点的父节点 L=L-next; } while(L datak2) }//3算法采取的是头插法node *f3(no *a,no *b){ if(!a || !b) return 0; node *c=new node,*p; if(!c) exit(1); c-next=0; while(a-next || b-next) { if(!a-next || b-next next-data a-next-data) {//当链表a为空时,或b链表存在且b链表的第1个值小于a链表 p=b-next; b-next=p-next; } else p-next=c-next; c-next=p; } return c;}
求助 这个数据结构题怎么完成 谢谢 急求····
#include<stdio.h> #include "malloc.h" typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void CreateBiTree(BiTree &T); //创建二叉树 void PreOrder(BiTree T); //二叉树的先序遍历 void InOrder(BiTree T); // 二叉树的中序遍历 void PostOrder(BiTree T); // 二叉树后序遍历 void LeafCount(BiTree T,int &count); //统计二叉树的叶子节点 void CreateBiTree(BiTree &T) { char c; scanf("%c",&c); if(c==' ') { T=NULL; return;} T=(BiTNode*)malloc(sizeof(BiTNode)); T->data=c; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } ///////////////////// void PreOrder(BiTree T) { if(!T) return; printf("%c\t",T->data); PreOrder(T->lchild); PreOrder(T->rchild); } //////////////////// void InOrder(BiTree T) { if(!T) return; InOrder(T->lchild); printf("%c\t",T->data); InOrder(T->rchild); } ///////////////////// void PostOrder(BiTree T) { if(!T) return ; PostOrder(T->lchild); PostOrder(T->rchild); printf("%c\t",T->data); } ////////////////////// void LeafCount(BiTree T,int &count) { if(!T) return; if(!T->lchild&&!T->rchild) count++; LeafCount(T->lchild,count); LeafCount(T->rchild,count); } //////////////////////// 这是部分二叉树操作的函数,自己写主函数调用吧,希望对你有帮助。
求助 这个数据结构题怎么完成 谢谢 急求····
#include<stdio.h>
#include "malloc.h"
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T); //创建二叉树
void PreOrder(BiTree T); //二叉树的先序遍历
void InOrder(BiTree T); // 二叉树的中序遍历
void PostOrder(BiTree T); // 二叉树后序遍历
void LeafCount(BiTree T,int &count); //统计二叉树的叶子节点
void CreateBiTree(BiTree &T)
{
char c;
scanf("%c",&c);
if(c==' ') { T=NULL; return;}
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=c;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
/////////////////////
void PreOrder(BiTree T)
{
if(!T) return;
printf("%c\t",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
////////////////////
void InOrder(BiTree T)
{
if(!T) return;
InOrder(T->lchild);
printf("%c\t",T->data);
InOrder(T->rchild);
}
/////////////////////
void PostOrder(BiTree T)
{
if(!T) return ;
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c\t",T->data);
}
//////////////////////
void LeafCount(BiTree T,int &count)
{
if(!T) return;
if(!T->lchild&&!T->rchild)
count++;
LeafCount(T->lchild,count);
LeafCount(T->rchild,count);
}
////////////////////////
这是部分二叉树操作的函数,自己写主函数调用吧,希望对你有帮助。
请高人帮忙算2个数据结构算法的问题,谢谢啊啊!
1.交换结点没意义,是要交换这两结点的数据域的内容吧。假设数据域中只有一个整型的数据成员data,可以这样:
int t;
t=p->data; p->data=p->next->data; p->next->data=t;
2. bool fun()
{ NODE *p,*q;
int n;
q=HEAD;
p=q->next;
n=2;
while(p)
{ if(p->data!=n*n-q->data)return false;
q=p;
p=p->next;
n++;
}
return true;
}