云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 北京科技大学数据结构试验报告(附录含代码)汇编

北京科技大学数据结构试验报告(附录含代码)汇编

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 6:46:48

学习-----好资料

r->next=NULL; //将尾节点的指针域置空 return H; //返回已创建的头节点 }

List Adjmax(List H) //比较相邻两数之和

{ //返回相邻两数之和最大的第一个数指针 List p,r,q; int sum=0; p=H->next; if(H->next ==NULL) //判断是否为空 { printf(\ q=(List)malloc(sizeof(list)); q->data =0;

}

while(p!=NULL) //比较相邻两数之和 { r=p->next ; if(p&&r) if(r->data+p->data>sum) { q=p; sum=r->data +p->data ;}//不断赋给sum新的最大值 else; p=p->next ; } return q; }

int main() { char ch; printf(\请输入整形数据,以空格隔开,0结束。/// \\n\ printf(\ \\nY/N (enter 'y' or 'Y' to continue) \\n\ while(scanf(\ {

List H,pmax; H=Creatlist(); pmax=Adjmax(H);

printf(\相邻两数之和最大的第一个数为:%d\\nContinue? Y/N free(H); scanf(\ }

return 0;

}

更多精品文档

\ 学习-----好资料 实验二:

#include #include #include

typedef struct node //栈节点类型 { char data; //存储一个栈元素 struct node *next; //后继指针 }snode,*slink;

int Emptystack(slink S) //检测栈空 { if(S==NULL) return(1); else return(0); }

char Pop(slink*top) //出栈 { char e; slink p; if(Emptystack(*top)) return(-1); //栈空返回 else { e=(*top)->data; //取栈顶元素 p=*top; *top=(*top)->next; //重置栈顶指针 free(p);return(e); } }

void Push(slink*top,char e) //进栈 { slink p; p=(slink)malloc(sizeof(snode)); //生成进栈p节点 p->data=e; //存入元素e p->next=*top; //p节点作为新的栈顶链入 *top=p; }

void Clearstack(slink*top) //置空栈 { slink p; while(*top!=NULL) { p=(*top)->next; Pop(top); //依次弹出节点直到栈空 *top=p; } *top=NULL; 更多精品文档

学习-----好资料 }

char Getstop(slink S) //取栈顶 { if(S!=NULL)return(S->data); return(0); }

//符号优先级比较

int Precede(char x,char y) //比较x是否\大于\{ switch(x) { case '(':x=0;break; case '+': case '-':x=1;break; case '*': case '/':x=2;break; default: x=-1; } switch(y) { case '+': case '-':y=1;break; case '*': case '/':y=2;break; case '(':y=3;break; default: y=100; } if (x>=y)return(1); else return(0); }

//中后序转换

void mid_post(char post[],char mid[])//中缀表达式mid到后缀表达式post的转换的算法 { int i=0,j=0; char x;

slink S=NULL;//置空栈 Push(&S,'#');//结束符入栈 do { x=mid[i++];//扫描当前表达式分量x switch(x) { case '#': { while(!Emptystack(S)) post[j++]=Pop(&S);

更多精品文档

学习-----好资料 }

}break; case ')': { while(Getstop(S)!='(') post[j++]=Pop(&S);//反复出栈直至遇到'(' Pop(&S);//退掉'(' }break; case '+': case '-': case '*': case '/': case '(': { while(Precede(Getstop(S),x))//栈顶运算符(Q1)与x比较 post[j++]=Pop(&S);//Q1>=x时,输出栈顶符并退栈 Push(&S,x);//Q1

}while(x!='#'); post[j]='\\0';

//后缀表达式求值

int postcount(char post[])//后缀表达式post求值的算法 { int i=0; char x; float z,a,b; slink S=NULL;//置栈空 while (post[i]!='#') { x=post[i];//扫描每一个字符送x switch(x) {case '+':b=Pop(&S);a=Pop(&S);z=a+b;Push(&S,z);break; case '-':b=Pop(&S);a=Pop(&S);z=a-b;Push(&S,z);break; case '*':b=Pop(&S);a=Pop(&S);z=a*b;Push(&S,z);break; case '/':b=Pop(&S);a=Pop(&S);z=a/b;Push(&S,z);break;//执行相应运算结果进栈 default:x=post[i]-'0';Push(&S,x);//操作数直接进栈 } i++; } if (!Emptystack(S))return(Getstop(S));//返回结果 }

void main() { char post[255],mid[255]=\ printf(\请输入要处理的中缀表达式:\\n\更多精品文档

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

学习-----好资料 r->next=NULL; //将尾节点的指针域置空 return H; //返回已创建的头节点 } List Adjmax(List H) //比较相邻两数之和 { //返回相邻两数之和最大的第一个数指针 List p,r,q; int sum=0; p=H->next; if(H->next ==NULL) //判断是否为空 { printf(\ q=(List)malloc(sizeof(list)); q->data =0; } while(p!=NULL) //比较相邻两数之和 { r=p->next ; if(p&&r) if(r->data+p->data>sum) {

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com