单链表基本操作演示系统 100
实现带头结点单链表的基本运算:1)单链表的初始化;2)置空单链表;3)求表长;4)在指定位置插入新元素;5)查找指定位置元素;6)查找给定值元素;7)删除指定位置元素;8...
实现带头结点单链表的基本运算:1)单链表的初始化;2)置空单链表;3)求表长;4)在指定位置插入新元素;5)查找指定位置元素;6)查找给定值元素;7)删除指定位置元素;8)删除指定值元素
展开
1个回答
展开全部
这个是单链表的使用中的通讯录管理
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 100
typedef int elemtype;
char ch[7]={'+','-','*','/','(',')','#'};
int f1[7]={3,3,5,5,1,6,0};
int f2[7]={2,2,4,4,6,1,0};
int n=0;
typedef struct sqstack
{
elemtype stack[MAXSIZE];
int top;
}sqstack;
elemtype cton(char c)
{
switch(c)
{
case '+':return 0;
case '-':return 1;
case '*':return 2;
case '/':return 3;
case '(':return 4;
case ')':return 5;
default:return 6;
}
}
char Compare(char c1,char c2)
{
int i1=cton(c1);
int i2=cton(c2);
if(f1[i1]>f2[i2])
return '>';
else if(f1[i1]<f2[i2])
return '<';
else
return '=';
}
int Operate(elemtype a,elemtype t,elemtype b)
{
int sum;
switch(t)
{
case 0: sum=a+b;break;
case 1: sum=a-b;break;
case 2: sum=a*b;break;
default: sum=a/b;break;
}
return sum;
}
int EvaluateExpression()
{
char c;
int i=0,sum=0,k=1,j=1;
elemtype x,t,a,b;
sqstack OPTR,OPND;
Initstack(&OPTR);
Push(&OPTR,cton('#'));
Initstack(&OPND);
c=getchar();
while(c!='#' || ch[Gettop(OPTR)]!='#')
{
if(isdigit(c))
{
sum=0;
while(isdigit(c))
{
if(!j)
{
sum=sum*10-(c-'0');
}
else sum=sum*10+(c-'0');
c=getchar();
}
Push (&OPND,sum);
j=1;
}
else if(k)
{
switch(Compare(ch[Gettop(OPTR)],c))
{
case'<':Push(&OPTR,cton(c));
c=getchar();
break;
case'=':Pop(&OPTR,&x);
c=getchar();
break;
case'>':Pop(&OPTR,&t);
Pop(&OPND,&a);
Pop(&OPND,&b);
Push(&OPTR,Operate(a,t,b));
break;
}
}
}
return(Gettop(OPND));
}
elemtype Gettop(sqstack s)
{
if(s.top==0)
{
printf("ERROR,underflow\n");
return 0;
}
else
return s.stack[s.top];
}
void Initstack(sqstack *s)
{
s->top =0;
}
void Pop(sqstack *s,elemtype *x)
{
if(s->top=0)
printf("ERROR,Underflow\n");
else
{
*x=s->stack[s->top];
s->top--;
}
}
void Push(sqstack *s,elemtype x)
{
if(s->top==MAXSIZE-1)
printf("ERROR\n");
else
{
s->top++;
s->stack[s->top]=x;
}
}
bool StackEmpty(sqstack S)
{
if(S.top=0)
return true;
else
return false;
}
void main()
{
int result;
printf("请输入算术表达式,以#号结束:\n");
result=EvaluateExpression();
printf("计算结果是: %d\n",result);
}
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 100
typedef int elemtype;
char ch[7]={'+','-','*','/','(',')','#'};
int f1[7]={3,3,5,5,1,6,0};
int f2[7]={2,2,4,4,6,1,0};
int n=0;
typedef struct sqstack
{
elemtype stack[MAXSIZE];
int top;
}sqstack;
elemtype cton(char c)
{
switch(c)
{
case '+':return 0;
case '-':return 1;
case '*':return 2;
case '/':return 3;
case '(':return 4;
case ')':return 5;
default:return 6;
}
}
char Compare(char c1,char c2)
{
int i1=cton(c1);
int i2=cton(c2);
if(f1[i1]>f2[i2])
return '>';
else if(f1[i1]<f2[i2])
return '<';
else
return '=';
}
int Operate(elemtype a,elemtype t,elemtype b)
{
int sum;
switch(t)
{
case 0: sum=a+b;break;
case 1: sum=a-b;break;
case 2: sum=a*b;break;
default: sum=a/b;break;
}
return sum;
}
int EvaluateExpression()
{
char c;
int i=0,sum=0,k=1,j=1;
elemtype x,t,a,b;
sqstack OPTR,OPND;
Initstack(&OPTR);
Push(&OPTR,cton('#'));
Initstack(&OPND);
c=getchar();
while(c!='#' || ch[Gettop(OPTR)]!='#')
{
if(isdigit(c))
{
sum=0;
while(isdigit(c))
{
if(!j)
{
sum=sum*10-(c-'0');
}
else sum=sum*10+(c-'0');
c=getchar();
}
Push (&OPND,sum);
j=1;
}
else if(k)
{
switch(Compare(ch[Gettop(OPTR)],c))
{
case'<':Push(&OPTR,cton(c));
c=getchar();
break;
case'=':Pop(&OPTR,&x);
c=getchar();
break;
case'>':Pop(&OPTR,&t);
Pop(&OPND,&a);
Pop(&OPND,&b);
Push(&OPTR,Operate(a,t,b));
break;
}
}
}
return(Gettop(OPND));
}
elemtype Gettop(sqstack s)
{
if(s.top==0)
{
printf("ERROR,underflow\n");
return 0;
}
else
return s.stack[s.top];
}
void Initstack(sqstack *s)
{
s->top =0;
}
void Pop(sqstack *s,elemtype *x)
{
if(s->top=0)
printf("ERROR,Underflow\n");
else
{
*x=s->stack[s->top];
s->top--;
}
}
void Push(sqstack *s,elemtype x)
{
if(s->top==MAXSIZE-1)
printf("ERROR\n");
else
{
s->top++;
s->stack[s->top]=x;
}
}
bool StackEmpty(sqstack S)
{
if(S.top=0)
return true;
else
return false;
}
void main()
{
int result;
printf("请输入算术表达式,以#号结束:\n");
result=EvaluateExpression();
printf("计算结果是: %d\n",result);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询