第二十九讲 栈和队列7(视频+课件+源代码)
该讲座视频下载地址:http://blog.fishc.com/2139.html
该讲座所需课件:
注:VIP会员享有免费下载本站所有资源的特权!
友情提示:通过购买鱼C光盘/优盘打包(具体内容)均可加入VIP终身会员^_^
支持了顶个……{:1_1:} 每个都下载了,哈哈:lol 20鱼币,是不是太···:$ 为啥就20个鱼币,太贵了C才5个还不好,好不好 20鱼币好贵呀!!!!!!!!! 我真的很感悟……:huffy: 本帖最后由 小泉向西流 于 2014-7-10 15:15 编辑
队列的出入输出作业:
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct QNode
{
ElemType data;
struct QNode *next;
}QNode, *QueuePrt;
typedef struct
{
QueuePrt front, rear;
}LinkQuene;
void InitQuene(LinkQuene *q)
{
q->front=q->rear=(QueuePrt)malloc(sizeof(QNode));
if(!q->front)
exit(0);
q->front->next=NULL;
}
void InsertQueue(LinkQuene *q, ElemType e) //入队
{
QueuePrt p;
p=(QueuePrt)malloc(sizeof(QNode));
if(p==NULL)
exit(0);
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
void DeleteQuene(LinkQuene *q, ElemType *e)//出队
{
QueuePrt p;
if(q->front==q->rear)
return ;
p=q->front->next;
*e=p->data;
q->front->next=p->next;
if(q->rear == p)
q->rear=q->front;
free(p);
}
void DestroyQuene(LinkQuene *q) //销毁队列
{
while(q->front)
{
q->rear=q->front->next;
free(q->front);
q->front=q->rear;
}
q->front=NULL;
}
void GetHead(LinkQuene *q) //获取队列的第一个元素,并输出
{
QueuePrt p=q->front->next;
printf("%c\n", p->data);
}
void PrintQuene(LinkQuene *q) //队列输出
{
QueuePrt p;
p=q->front->next;
while(p)
{
printf("%c", p->data);
p=p->next;
}
}
int main()
{
QNode q;
char c,e;
InitQuene(&q);
printf("请输入一串字符,以#表示结束:\n");
scanf("%c", &c);
while(c!='#')
{
InsertQueue(&q, c);
scanf("%c", &c);
}
getchar();
printf("队列的第一个字符为: ");
GetHead(&q);
printf("\n");
printf("队列输出: ");
PrintQuene(&q);
printf("\n\n");
DeleteQuene(&q,&e);
printf("删除的元素为:%c\n",e);
printf("新的队列输出:");
PrintQuene(&q);
printf("\n\n");
return 0;
}
中缀表达式转换为后缀表达式的时候在判断c是否为*或者/号时,应该先判断栈顶得元素是否为*或者/吧,如果栈顶是*或者/,Pop栈顶元素,然后printf输出,再将新输入的*或者/入栈。小甲鱼老师是直接push进栈了。
小泉向西流 发表于 2014-7-10 15:11
队列的出入输出作业:
支持顶啊 强烈支持甲鱼ing…… 楼上是自己写的吗? 来学习学习 太生气了,无法HOLD啦 >_<......怎么和视频不是对应的程序文件。我要下的是中缀转后缀的程序啊啊啊啊啊啊,害我花了20<。)#)))≦币:mad: 中缀转后缀的程序中有个函数Push,总报错。大神帮忙看看错哪了。int Push(sqStack *s,ElemType e)
{
//栈满,追加空间
if(s->top - s->base >= s->stackSize)
{
s->base = (ElemType *)realloc(s->base,(s->stackSize + STACKINCREMENT))*sizeof(ElemType);
if(!s->base)
exit(0);
s->top = s->base + s->stackSize;
s->stackSize = s->stackSize + STACKINCREMENT;
}
*(s->top) = e;// to store data
s->top++;
}
只有18鱼币啊 20币。。。。。 加油加油 good good study 本帖最后由 akyl56 于 2018-8-25 17:03 编辑
学习一下
页:
[1]
2