数据结构试验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//将十进制数N转换为r进制的数#include

#define L_size 100

void conversion(int N,int r)

{

int s[L_size],top;

int x;

top=-1;

while(N!=0){

s[++top]=N%r;

N=N/r;

}

while(top!=-1)

{

x=s[top--];

if(x==10)printf("A");

else if(x==11)printf("B");

else if(x==12)printf("C");

else if(x==13)printf("D");

else if(x==14)printf("E");

else if(x==15)printf("F");

else printf("%d",x);

}

printf("\n");

}

void main(){

int number,r;

printf("输入10进制数");

scanf("%d",&number);

printf("几进制(2,8,16)");

scanf("%d",&r);

printf("转换结果");

conversion(number,r);

}

//用顺序栈实现算术后缀表达式求值

#include

#include

#define L_size 50

void postexp()

{

int st[L_size],top=-1;

int d=0;

char ch;

printf("输入规范后缀表达式eg:3 2 5*+\n"); while((ch=getchar())!='\n')

{

if(ch==' ')

continue;

else

switch(ch)

{

case '+':

st[top-1]=st[top-1]+st[top];

top--;

break;

case '-':

st[top-1]=st[top-1]-st[top];

top--;

break;

case '*':

st[top-1]=st[top-1]*st[top];

top--;

break;

case'/':

if(st[top]!=0)

{

st[top-1]=st[top-1]/st[top];

top--;

break;

}

else

{

printf("分母为零");

exit(1);

}

break;

default:

while(ch>='0'&&ch<='9')

{

d=10*d+ch-'0';

ch=getchar();

}

st[++top]=d;

d=0;

}

}

printf("运算结果:%d\n",st[top]);

}

void main()

{

postexp();

}

//链式队列基本操作

#include

#include

#include

typedef int Elemtype;

typedef struct node //队列结点类型定义

{ Elemtype data; //队列的数据元素类型

struct node *link; //指向后继结点的指针

}NODE;

struct QueueLk

{ //定义链队

NODE *front,*rear;//定义链队队头和队尾指针

};

//2、入队

struct QueueLk *ldcr(struct QueueLk *QL,Elemtype x)

//将元素x插入到链队列rear中,作为rear的新队尾

{

NODE *p;

p=(NODE *)malloc(sizeof(NODE));

p->data=x;

p->link=NULL; //置新结点的指针为空

if(QL->front==NULL) //队列为空

QL->front=QL->rear=p;

else

{

QL->rear->link=p ; //将链队列中最后一个结点的指针指向新结点

QL->rear=p ; //将队尾指向新结点

}

return QL;

}

//3、出队

Elemtype ldsc(struct QueueLk *QL)

//若链队列不为空,则删除队头元素,返回其元素值

{ NODE *s;

Elemtype x;

if(QL->front==QL->rear) //队空,退出程序

exit(1);

s=QL->front->link; //取队头保存在s中

QL->front->link=s->link ; //删除队头结点

if(s->link==NULL) //如果删除后队列为空,则处理队尾指针QL->rear=QL->front;

x=s->data; //将刚才出队的结点值给x

free(s) ; //释放出该结点的空间return x;

}

//4、队列的初始化

void initqueue(struct QueueLk *QL)

{

QL->front=(NODE *)malloc(sizeof(NODE));

QL->front->link=NULL;

QL->rear=QL->front;

}

//5、队列的显示

void dispqueue(struct QueueLk *QL)

{

NODE *q;

q=QL->front->link;

if(q==NULL)printf("队列已空!\n");

while(q!=NULL)

{

printf("%5d",q->data);

q=q->link;

}

printf("\n");

}

//6、编写主函数验证上述子函数是否正确。

void main()

{

struct QueueLk *p;

int choice,elemdata,x=0;

p=(struct QueueLk *)malloc(sizeof(struct QueueLk));

initqueue(p);

while(1)

{

printf("请输入你的操作选择:\n");

printf("(1)元素入队请按数字1!\n");

printf("(2)元素出队请按数字2!\n");

相关文档
最新文档