请问请问一下y=a*x^2 b*x cin...

非递归创建二叉树//cin&&要如何输入如何卡住了。是程序有关问题_高仿微信会话列表滑动删除效果_(还是上次的有关问题)这段代码编译通过,在输出上存在有关问题吗__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
非递归创建二叉树//cin&&要如何输入如何卡住了。是程序有关问题
高仿微信会话列表滑动删除效果
(还是上次的有关问题)这段代码编译通过,在输出上存在有关问题吗
非递归创建二叉树//cin&&要如何输入如何卡住了。是程序有关问题
非递归创建二叉树//cin&&要怎么输入怎么卡住了。。。是程序问题?
#include&iostream&
#include&malloc.h&
#include&stack&
typedef struct Node
int main()
stack&Node*&
if(data==0)
node=NULL;
//cout&&"首结点为空"&&
node=(Node *)malloc(sizeof(Node));//创建一个首结点
node-&data=
node-&leftchild=NULL;//把首结点的左右孩子都置空
node-&rightchild=NULL;
//cout&&"压入根结点的值"&&
tree.push(node);
while(tree.top()!=NULL)
if(data==0)
node=NULL;
// cout&&"左结点为空"&&
node=(Node *)malloc(sizeof(Node));
node-&data=
tree.top()-&leftchild=
tree.top()-&rightchild=NULL;//令右结点为空的原因是:在如果右结点为空,说明这个结点右孩子还没有输入,下回输入的会是右孩子,如果右孩子不为空,说明这个结点的右孩子结点输入过,回来再弹栈的时候会把已经输入过左右结点的结点弹出,如果右结点没有被输入过,刚就不能把这个结点弹出,因为道先要把这个结点的右孩子给输上
tree.push(node);//将左孩子结点压入栈中
//cout&&"压入左结点"&&data&&
}while(node!=NULL);
while(!tree.empty())//因为整个程序是按照先序创建二叉树的,上面一个循环建立的左孩子,一但循环结点说明当前结点没有了左孩子,下面就要建立右孩子
//然而如果建立了一个右孩子,这个右孩子则还可能生成左孩子,因此,一旦生成一个右孩子,上面生成左孩子的循环将还要继续
//输入右结点
if(data==0)
node=NULL;
//如果右孩子为空结点,则说明这个结点左右结点都为空,则要将这个结点出栈,去找剩下孩子的右结点
//cout&&"右结点为空"&&
node=(Node *)malloc(sizeof(Node));
//如果不为空,说明该结点还有右孩子,则把右孩子压栈以后再开始左孩子之路,又开始最开始循环
node-&data=
tree.top()-&rightchild=
tree.push(node);
//cout&&"压入右结点"&&data&&
if(node==NULL)//表明右结点也为空,这样就得弹弹出头结点
//cout&&"左右结点都为空,弹出一个头结点a"&&tree.top()-&data&&
tree.pop();
while(tree.top()-&rightchild!=NULL&&!tree.empty())//检测父亲结点是否已经输入,如果输入则继续弹出
//这个检测父亲结点是否已经输入过有两种情况
//也就是出栈分两种情况
在进行左结点的输入时,如果一个结点的左右孩子都空为,则要将这个结点出栈,
//出栈后上一个结点成为了当前结点,左半部分是这个结点还没有输入,继续输入左半部分
//而如果是在这个树已经完成,输入最一个结点时,最后一个结点也是没有左右孩子,按照上面的说法就要出栈,其父亲结点会成为栈顶元素
//而其父亲元素已经输入过了,再输入就成了一个死循环,因些要作出判断,如果输入过了,则继续出栈,直到栈空
//cout&&"弹出一个父亲结点"&&tree.top()-&data&&
// cout&&"pop尚未执行"&&
tree.pop();
// cout&&"pop已经执行"&&
if(tree.empty())
// cout&&"empty";
------解决方案--------------------
这个输入怎么样?每个输入语句cin&&
//输入右结点
cin.sync();
但是楼主的程序还是有很大的问题的 比如崩溃之类的是存在的 能输入了 慢慢调试慢慢改吧------解决方案--------------------这是网上找的,大哥有非递归二叉树创建吗?
这个输入怎么样?每个输入语句cin&&
//输入右结点
cin.sync();
但是楼主的程序还是有很大的问题的 比如崩溃之类的是存在的 能输入了 慢慢调试慢慢改吧
高仿微信会话列表滑动删除效果
高仿微信对话列表滑动删除效果前言
用过微信的都知道,微信对话列表滑动删除效果是很不错的,这个效果我们也可以有。思路其实很简单,弄个ListView,然后里面的每个item做成一个可以滑动的自定义控件即可。由于ListView是上下滑动而item是左右滑动,因此会有滑动冲突,也许你需要了解下android中点击事件的派发流程,请参考Android源码分析-点击事件派发机制。我的解决思路是这样的:重写ListView的onInterceptTouchEvent方法,在move的时候做判断,如果是左右滑动就返回false,否则返回true;重写SlideView(即自定义item控件)的onTouchEvent方法来处理滑动。整个思路没有问题,滑动冲突也解决了,可是ListView无法得到焦点了,也就是ListView无法处理点击事件了。让我们回想下问题出在哪里:我的理解是这样的,上述处理滑动本身没有问题,但是有一个副作用,就是会让外层View失去焦点且无法处理点击事件。常见的滑动冲突场景,比如launcher内部嵌入ListView却是没有问题的,因为这个时候launcher不需要获得焦点,需要获得焦点的是内部的ListView。因此,上述处理方式对于外部需要获得焦点的情况(比如外部是ListView)就不太适合了。于是我就和ttdevs探讨,发现他采用了另外一种思路,我从来没有想过还可以这样玩。下面介绍他的思路。
不考虑那么复杂,不采用主流玩法,所有的事件均由外层的ListView做拦截,同时把事件传递给SlideView做滑动,这种实现的确可以达到效果,而且代码很简单,根本不需要处理什么复杂的滑动冲突。
下面分别为微信和高仿效果
先看SlideView是如何实现的
看layout xml:
&com.macc.firstsecretary_UI.ListViewCompat
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff4f7f9"
android:cacheColorHint="#"
android:divider="#dddbdb"
android:dividerHeight="1.0px"
android:drawSelectorOnTop="false"
android:listSelector="@android:color/transparent"
android:scrollbars="none" /&
再看com.macc.firstsecretary_UI.ListViewCompat类的代码:
private static final String TAG = "ListViewCompat";
private SlideView mFocusedItemV
public ListViewCompat(Context context) {
super(context);
public ListViewCompat(Context context, AttributeSet attrs) {
super(context, attrs);
public ListViewCompat(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
public void shrinkListItem(int position) {
View item = getChildAt(position);
if (item != null) {
((SlideView) item).shrink();
} catch (ClassCastException e) {
e.printStackTrace();
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
int x = (int) event.getX();
int y = (int) event.getY();
int position = pointToPosition(x, y);
Log.e(TAG, "postion=" + position);
if (position != INVALID_POSITION) {
Message data = (Message) getItemAtPosition(position);
mFocusedItemView = data.getSlideView();
Log.e(TAG, "FocusedItemView=" + mFocusedItemView);
if (mFocusedItemView != null) {
mFocusedItemView.onRequireTouchEvent(event);
再看SlideView.java:
public class SlideView extends LinearLayout {
private static final String TAG = "SlideView";
private Context mC
private LinearLayout mViewC
private RelativeLayout mH
private Scroller mS
private OnSlideListener mOnSlideL
private int mHolderWidth = 120;
private int mLastX = 0;
private int mLastY = 0;
private static final int TAN = 2;
boolean isScroller=//是否已经滑动
public interface OnSlideListener {
public static final int SLIDE_STATUS_OFF = 0;
public static final int SLIDE_STATUS_START_SCROLL = 1;
public static final int SLIDE_STATUS_ON = 2;
* @param view current SlideView
* @param status SLIDE_STATUS_ON or SLIDE_STATUS_OFF
public void onSlide(View view, int status);
public SlideView(Context context) {
super(context);
initView();
public SlideView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
private void initView() {
mContext = getContext();
mScroller = new Scroller(mContext);
setOrientation(LinearLayout.HORIZONTAL);
View.inflate(mContext, R.layout.slide_view_merge, this);
mViewContent = (LinearLayout) findViewById(R.id.view_content);
mHolderWidth = Math.round(TypedValue.applyDimension(
PLEX_UNIT_DIP, mHolderWidth, getResources()
.getDisplayMetrics()));
public void setButtonText(CharSequence text) {
((TextView)findViewById(R.id.delete)).setText(text);
public void setContentView(View view) {
mViewContent.addView(view);
public void setOnSlideListener(OnSlideListener onSlideListener) {
mOnSlideListener = onSlideL
public void shrink() {
if (getScrollX() != 0) {
this.smoothScrollTo(0, 0);
public void onRequireTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
int scrollX = getScrollX();
Log.d(TAG, "x=" + x + "
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
if (!mScroller.isFinished()) {
mScroller.abortAnimation();
if (mOnSlideListener != null) {
mOnSlideListener.onSlide(this,
OnSlideListener.SLIDE_STATUS_START_SCROLL);
case MotionEvent.ACTION_MOVE: {
int deltaX = x - mLastX;
int deltaY = y - mLastY;
if (Math.abs(deltaX) & Math.abs(deltaY) * TAN) {
int newScrollX = scrollX - deltaX;
if (deltaX != 0) {
if(isScroller){
this.shrink();
if (newScrollX & 0) {
newScrollX = 0;
} else if (newScrollX & mHolderWidth) {
newScrollX = mHolderW
this.scrollTo(newScrollX, 0);
case MotionEvent.ACTION_UP: {
int newScrollX = 0;
if (scrollX - mHolderWidth * 0.75 & 0) {
newScrollX = mHolderW
if(isScroller){
this.shrink();
isScroller=
this.smoothScrollTo(newScrollX, 0);
if (mOnSlideListener != null) {
mOnSlideListener.onSlide(this,
newScrollX == 0 ? OnSlideListener.SLIDE_STATUS_OFF
: OnSlideListener.SLIDE_STATUS_ON);
isScroller=
private void smoothScrollTo(int destX, int destY) {
// 缓慢滚动到指定位置
int scrollX = getScrollX();
int delta = destX - scrollX;
mScroller.startScroll(scrollX, 0, delta, 0, Math.abs(delta) * 3);
invalidate();
public void computeScroll() {
if (puteScrollOffset()) {
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
postInvalidate();
上述代码做了很详细的说明,这就是滑动控件的完整代码,大家要明白的是:你所添加的view都是加在SlideView的子View : view_content中的,而不是直接加在SlideView中,只有这样我们才方便做滑动效果。
最后一步我们来看看适配器里面的代码:
public class Carpa_MySelf_MessageCenterAdapter extends BaseAdapter implements OnSlideListener,OnClickListener{
private LayoutI
private List&Message&
private SlideView mSlideV
//删除位置数据
public Carpa_MySelf_MessageCenterAdapter(Context context,ArrayList&Message& messages,Handler handler){
setData(messages);
this.context=
inflater=LayoutInflater.from(context);
this.handler=
public void setData(ArrayList&Message& messages){
if(messages==null){
this.messages=new ArrayList&Message&();
this.messages=
public void setPosition(int position){
this.position=
public int getCount() {
// TODO Auto-generated method stub
return messages.size();
public Object getItem(int position) {
// TODO Auto-generated method stub
return messages.get(position);
public long getItemId(int position) {
// TODO Auto-generated method stub
public View getView(int position, View convertView, ViewGroup parent) {
SlideView slideView = (SlideView) convertV
if (slideView == null) {
View itemView = inflater.inflate(R.layout.carpa_myself_message_center_item, null);
slideView = new SlideView(context);
slideView.setContentView(itemView);
holder = new ViewHolder(slideView);
slideView.setOnSlideListener(Carpa_MySelf_MessageCenterAdapter.this);
slideView.setTag(holder);
holder = (ViewHolder) slideView.getTag();
Message msgMessage=messages.get(position);
msgMessage.setSlideView(slideView);
msgMessage.getSlideView().shrink();
String sourceString=msgMessage.getSourceStr();
holder.tvContent.setText("内容:"+msgMessage.getContentStr());
holder.tvTime.setText(UtilTools.fromatDate(msgMessage.getTimeStr()));
holder.deleteHolder.setOnClickListener(Carpa_MySelf_MessageCenterAdapter.this);
if(sourceString.equals("Traffic")){
holder.tvSource.setText("信息来源:66");
holder.iView.setBackgroundResource(R.drawable.carpa_wz);
}else if(sourceString.equals("DaiJia")){
holder.tvSource.setText("信息来源:99");
holder.iView.setBackgroundResource(R.drawable.car_deldrive);
}else if(sourceString.equals("Nianjian")){
holder.tvSource.setText("信息来源:33");
holder.iView.setBackgroundResource(R.drawable.car_yearcheck);
}else if(sourceString.equals("JiaSZ")){
holder.tvSource.setText("信息来源:88");
holder.iView.setBackgroundResource(R.drawable.car_zjbl);
}else if(sourceString.equals("HKJiaSZ")){
holder.tvSource.setText("信息来源:11");
holder.iView.setBackgroundResource(R.drawable.car_hongkong);
return slideV
class ViewHolder {
public ImageView iV
public TextView tvS
public TextView tvT
public TextView tvC
public ViewGroup deleteH
ViewHolder(View view) {
iView=(ImageView)view.findViewById(R.id.message_center_iv);
tvSource = (TextView) view.findViewById(R.id.message_center_source);
tvTime = (TextView) view.findViewById(R.id.message_center_time);
tvContent = (TextView) view.findViewById(R.id.message_center_content);
deleteHolder = (ViewGroup)view.findViewById(R.id.holder);
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.holder) {
Log.e("info", "onClick v=" + v);
messages.remove(position);
this.notifyDataSetChanged();
handler.sendEmptyMessage(Tab_MySelf_MessageCenter.HANDLER_DELETE);
public void onSlide(View view, int status) {
// TODO Auto-generated method stub
if (mSlideView != null && mSlideView != view) {
mSlideView.shrink();
if (status == SLIDE_STATUS_ON) {
mSlideView = (SlideView)
代码已贴完毕!仅供参考,谢谢!
(还是上次的有关问题)这段代码编译通过,在输出上存在有关问题吗
求助:(还是上次的问题)这段代码编译通过,在输出上存在问题吗?#include
&stdlib.h&
initlist(sqlist
*)malloc(100
sizeof(float));
if(!la-& elem)
la-& length
la-& listsize
fuzhi(sqlist
printf( "Please
scanf( "%d ",
printf( "please
emplete: ");
scanf( "%f ",
la-& elem[i]
la-& length
lc-& listsize
lc-& length
la-& length
*)malloc(lc-& listsize
sizeof(float));
if(!lc-& elem)
la-& length
lb-& length
shuchu(sqlist
printf( "%f\n ",
lc-& elem[i]);
initlist(la);
initlist(lb);
fuzhi(la);
fuzhi(lb);
shuchu(lc);
例如如此执行:
而正确结果应该是:
请问如何修改?------解决方案--------------------#include
&stdlib.h&
typedef struct{
void initlist(sqlist *la){
la-& elem = (float *)malloc(100 * sizeof(float));
if(!la-& elem)
la-& length = 0;
la-& listsize = 100;
int fuzhi(sqlist *la){
printf( "Please input how much emplete:
scanf( "%d ", &n);
printf( "please input emplete: ");
for(i=0; i &n; i++){
scanf( "%f ", &x);
la-& elem[i] =
la-& length =
/* return 1; */
return la-&
void aa(sqlist *la, sqlist *lb, sqlist *lc){
float *pa, *pb, *pc, *pa_last, *pb_
lc-& listsize = lc-& length = la-& length + lb-&
pc = lc-& elem = (float *)malloc(lc-& listsize * sizeof(float));
if(!lc-& elem)
pa_last = la-& elem + la-& length - 1;
pb_last = lb-& elem + lb-& length - 1;
&= pa_last && pb
&= pb_last)
*pc++ = *pa++;
*pc++ = *pb++;
/* while(pc
&= pa_last) */
&= pa_last)
*pc++ = *pa++;
/* while(pc
&= pb_last) */
&= pb_last)
*pc++ = *pb++;
void shuchu(sqlist *lc){
for(i = 0; i
& lc-& i++)
printf( "%f\n ", lc-& elem[i]);
sqlist a, b,
sqlist *la = &a, *lb = &b, *lc = &c;
initlist(la);
initlist(lb);
fuzhi(la);
fuzhi(lb);
aa(la, lb, lc);
shuchu(lc);
自己对照看一下。。
------解决方案--------------------
&= pa_last && pb
&= pb_last)
*pc++ = *pa++;
*pc++ = *pb++;
&= pa_last)----pa &=pa_last
*pc++ = *pa++;
&= pb_last)________pb &= pb_last
*pc++ = *pa++;
————————————————————
然后就ok啦
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:如图,已知直线y=与x轴、y轴分别相交于B、A两点,抛物线y=ax2+bx+c经过A、B两点,且对称轴为直线x=-3.
(1)求A、B两点的坐标,并求抛物线的解析式;
(2)若点P以1个单位/秒的速度从点B沿x轴向点O运动.过点P作y轴的平行线交直线AB于点M,交抛物线于点N.设点P运动的时间为t,MN的长度为s,求s与t之间的函数关系式,并求出当t为何值时,s取得最大值?
(3)设抛物线的对称轴CD与直线AB相交于点D,顶点为C.问:在(2)条件不变情况下,是否存在一个t值,使四边形CDMN是平行四边形?若存在,求出t的值;若不存在,请说明理由.
(1)先求出AB两点的坐标,再用待定系数法求得二次函数的解析式;
(2)根据题意可求得点P的横坐标,再代入抛物线即可得出纵坐标,再由MN的长度即可表示出s与t之间的函数关系式;
(3)先假设存在,把x=-3代入,得出C、D的纵坐标,再由|MN|=6,即2+
t=6,求出t,使四边形CDMN是平行四边形.
解:(1)对于,
当x=0时,y=;令y=0,x=-7,
所以A(0,),B(-7,0),(2分)(各1分)
依题意得:,
抛物线的解析式是2-3x+
(2)依题意得:点P的横坐标是(t-7),
把x=(t-7)代入,得M、N的纵坐标:M=
(t-7)2-3(t-7)+
∴s=yN-yM=2+
即t=时,s取得最大值.
(3)存在.理由是:
把x=-3代入,得C、D的纵坐标:yC=8,yD=2,
∴|CD|=6,
令|MN|=6,有2+
t=6,t1=3,t2=4,
当t2=4时,MN与CD重合,舍去;
当t=3时,MN∥CD且MN=CD,故四边形CDMN是平行四边形.x ,t,d,r,.y,y,a,n.w ,s,b,d,y,f,q,.d.b,q/w.d.a.是什么意思_百度知道
x ,t,d,r,.y,y,a,n.w ,s,b,d,y,f,q,.d.b,q/w.d.a.是什么意思
是拼音的第一个字吗谁帮我翻译以下啊?
提问者采纳
else if(p[i] &int main(){ char* p = new char[30]();='A'&a; for (int i=0; gets(p);0' i & cin&&)
b+=(a[i]-' int sum = 0;&main (){ int b=0,显示200%int process(char * str){
char *p = NULL;b&
}} cout&='A' for(int i = 0;a'
if (a[i]&&z' strlen(p);
for(p = i++) {
if(p[i] & delete[]输入YYYYYYYY;= ' p++)
k += *p - '\ + 1;i++)
if (a[i]&/=')+1;A' && p[i] &sum&)
b+=(a[i]-''z'iostream& && p[i] &endl,就是ASCII码的计算而已;Z'= ' && a[i]&)
sum += p[i]-';strlen (a);+1;= ' return 0;&
} cout&A')
sum += p[i]-'
int k = 0;a' char a[1000];+1;='Z' *)+1;&%&quot!= '&a'} #include&#include&string.h&A'i& && a[i]&lt这个并没有难度啊;&
}iostream&}/%'= &#39。#include &lt
提问者评价
但还是要谢谢你
其他类似问题
其他1条回答
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C++练习,求输入x,y中的较大值这个练习中的一点疑惑_百度知道
C++练习,求输入x,y中的较大值这个练习中的一点疑惑
我在学谭浩强的《C++程序设计》,这个题作者给的思路是:#include &iostream&int max(int x, int y){ if(x&y) z=x; else z=y; return (z);}int main(){ int a,b,m; cin&&a&&b; m=max(a,b); cout&&&max=&&&m&&'\ln'; return 0;}我想问:1。为什么要先定义一个max函数?全部用main函数不行吗?这样多复杂?2。return (z);是什么意思?3。定义完的max函数到底怎么用到比较x,y上去的呢?
谢谢1楼,“但是这个函数可以随时复用到需要完成两数比较的地方”,这个我还是不理解,到底能怎么用会简单呢?假如多组数字比较的话?
提问者采纳
1.使用函数来完成重复的工作是非常方便的,这个例子只做了一组比较,但是这个函数可以随时复用到需要完成两数比较的地方,而且减小了调试查错的难度。全部写在main函数里面的话,会造成main函数异常冗长。补充:例子里面只是对a和b调用了max函数。如果还有c、d、e、f……等整形变量,那么我就随时可以把任意两个变量传进max函数来获得他们中的较大者。不知道这么说你们明白不。2.max函数的返回值是整数型,所以最后把变量z的值返回回来。3.先看max函数的实现。main函数有两个参数,x和y,在这里你可以把参数简单理解成函数的局部变量。判断x和y的大小关系,并把较大的数赋给变量z,最后返回z的值。调用的时候,max(a,b)把a和b的值传入max函数中,赋值给x和y,函数执行完之后,把返回值赋值给m。
提问者评价
其他类似问题
按默认排序
其他3条回答
你好!!1.用一个main函数完全可以的,但是你想要是有一千行,一万行代码,你只在一个函数里写,那么看着舒服吗???最重要的是代码的重用、、、、2.int max(int x, int y);int表示是一个返回数是整型的函数,那么子函数里就应该有return 语句;表示把最大值返回赋值给主函数里的变量m3.不懂你问题的是什么意思。不懂我们再交流吧!!!
1.将比较比较两个数的函数提出来,也就是所谓的模块化。
程序小的时候体现不出他的优点,程序很大代码很多的时候就可以体现他的优点了。
程序模块化的优点:
1&.提高可读性。
2&.提高代码复用率。
3&.增加可维护性。
...2.return (z); //返回x,y中较大的那个。3.max函数的主要功能就是你告诉他两个数 他就会返回较大的那个。
全部写在main函数里完全可以,不过有几个不好的地方如果程序写得长了一两百行,如果全部写在main里面就会很乱,如果把它拿出来放到max函数(封装)里,这个max函数的功能就是返回最大的数,如果你想要再次调用它就可以直接用max(),而不用再把代码复制一遍了return(z) 跟return z一样,就是返回z当你调用max函数时,先从主函数把要比较的两个实参(a和b)传递给max函数的形参,此时max函数里面的x就相当于传递进来的第一个数a,y相当于b,然后再进行判断nt max(int x, int y){
//定义一个整形z,用来保存最大的数 if(x&y) z=x; //判断,如果x大于y(就是a大于b) 那么把x赋值给z else z=y;
//否则把y赋值给z
//就是把大的那个数赋值给z return (z);//最后返回给main主函数,并在主函数里用m接受这个值}
疑惑的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 请问请问 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信