用C语言解决数据结构问题!!!

2014三个专业学生参加迎新晚会,随机到达并进入会场。晚会组织者按照专业安排座位。请使用计算机模拟晚会结束后同学们依次离开的过程。
三个专业学生学号均为三位整数:计算机(1XX);信管(2XX);数媒(3XX);
安排座位时,同专业学生要求按照其到达的先后次序入座;
假设场内椅子只有一排,最后入座的离门最近,最先出去;其余同学依次全部离开。

示例:
从终端依次输入若干三维整数,模拟学生学号及到达顺序:234 345 123 145 213 223 346

离开时顺序:346 345 223 213 234 145 123
用C++也可以

#include <stdio.h>

int main()
{
int a[500],b[500],c[500],ta=-1,tb=-1,tc=-1; //设置三个栈,分别存计算机、信管、数媒的学生学号
int tmp; //临时变量,用来暂时存储读入的学号

while(scanf("%d",&tmp)!= EOF) //读取数据,按照系别入栈
{
if(tmp/100 == 1)
a[++ta] = tmp;
else if(tmp/100 == 2)
b[++tb] = tmp;
else
c[++tc] = tmp;
}
while(tc > -1) //出栈
printf("%d ",c[tc--]);
while(tb > -1)
printf("%d ",b[tb--]);
while(ta > -1)
printf("%d ",a[ta--]);

return 0;
}
请采纳。
注意,输入数据的时候,以结束符EOF为结尾,在vc或codeblocks下,相当于在数据的下一行加一个ctrl+z
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-13
#include <stdio.h>


#define LEN 100
struct LiFo{
int posi[LEN];
int top;
};
void PUSH(struct LiFo *, int);
void POP(struct LiFo *);
void POPAll(struct LiFo *);
int _tmain(int argc, _TCHAR* argv[])
{
struct LiFo First, Second, Third;
int count,i;
int studentID;
First = { { 0 }, -1 };
Second = { { 0 }, -1 };
Third = { { 0 }, -1 };
printf("请输入参加学生人数:");
scanf("%d", &count);
for (i = count; i > 0;i--)
{
scanf("%d", &studentID);
switch (studentID / 100)
{
case 1:
{
PUSH(&First, studentID);
break;
}
case 2:
{
PUSH(&Second, studentID);
break;
}
case 3:
{
PUSH(&Third, studentID);
break;
}
}
}
POPAll(&Third);
POPAll(&Second);
POPAll(&First);
getchar();
getchar();
return 0;
}
void PUSH(struct LiFo *pLiFo, int data)
{
if (pLiFo->top > LEN)
{
printf("座位已满,无法在进入.\n");
return;
}
pLiFo->top++;
pLiFo->posi[pLiFo->top] = data;
}
void POP(struct LiFo *pLiFo)
{
if (pLiFo->top == -1)
printf("所有这排人员以全部走完.\n");
printf("%d ",pLiFo->posi[pLiFo->top--]);
}
void POPAll(struct LiFo *pLiFo)
{
while (pLiFo->top > -1)
POP(pLiFo);
}

用C语言编程,数据结构题 要快!答的好再加更多悬赏
include <stdlib.h> typedef int ElemType;typedef struct LNode { ElemType date;struct LNode *next;}linklist,*link;\/*构造链表*\/\/\/ void IinitList(link &L){ if(L)delete L;L= (link)malloc(sizeof(LNode)) ;if (!L) exit(1);L->next=NULL;printf("链表已经建立\\n");} \/\/\/...

c语言版 数据结构问题
1.找到结构的头(H)和尾(R)2.下面是伪代码 while(H在R之前) do begin if data_at[H]!=data_at[R] then return false;\/\/肯定不对称 H<-后继;R<-前驱;end;return true;时间复杂度O(strlen(s))既为表长

关于数据结构的问题,用C语言描述
二、数据结构各章节重点勾划:第0章 概述本章主要起到总领作用,为读者进行数据结构的学习进行了一些先期铺垫。大家主要注意以下几点:数据结构的基本概念,时间和空间复杂度的概念及度量方法,算法设计时的注意事项。本章考点不多,只要稍加注意理解即可。第一章 线性表作为线性结构的开篇章节,线性表一章在线性结构的学习...

C语言数据结构问题,我已经在线性表中插入了一个元素,为什么表的长度还是...
typedef struct node { int data[MAXSIZE];int length;}SeqList;\/\/定义一个线性表 SeqList L;\/\/顺序表的初始化 void SeqListInit(SeqList *L){ L->length = 0;} \/\/求线性表的长度 int SqlListLength(SeqList L){ return L.length;} \/\/顺序表的前插操作 void SeqListInsert(SeqList *...

关于数据结构算法,谁能帮我用C语言写下?谢谢
typedef struct \/* 队列的链表结构 *\/ { QueuePtr front,rear; \/* 队头、队尾指针 *\/ }LinkQueue;Status visit(QElemType c){ printf("%d ",c);return OK;} \/* 构造一个空队列Q *\/ Status InitQueue(LinkQueue *Q){ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));if(!Q-...

数据结构问题 C语言解答 线性表的就地逆置
q=q->next;p->next=NULL;while(q){\/\/每次循环将后一个结点变成新链表的第一个结点p=q;q=q->next;p->next=L->next;L->next=p;}}}上面的两个算法我都用完整的C源程序测试过了,没有问题的,希望这个对你有帮助哦,望采纳啊。如果你需要完整的源程序,请在评论里留言吧。

求解数据结构:串的查找和替换(C语言)
关键是文章格式问题比较难处理,所以用比较笨的办法,将文件里的字符一个一个处理,文件路径自己改吧,已通过编译 include <stdio.h> include <stdlib.h> define SIZE 20 \/* 查找单词字符和输入替换单词少于20 *\/ define MAXLEN 10000 \/* 文章字符不大于10000 *\/ void main(void){...

用C语言实现数据结构的题目:一元多项式相加
结果:1 1 4 2 6 3 include <stdio.h> include <malloc.h> struct poly \/\/设置结构体 { int xi;int zhi;struct poly *next;};struct poly *jianli(void) \/\/建立链表 { struct poly *p1,*head1,*p2;head1=(struct poly*)malloc(sizeof(poly));p1=(struct poly*)malloc(sizeof(poly...

c语言数据结构的问题,用尾插法建立链表
void creat(linklist L)\/\/L为一级指针,也是头指针{int f = 1;node *s, *r;r = L;while (f) {s = (node*)malloc(sizeof(node));scanf("%s", s->a);if (s->a[0] != '^') {r->next = s;r = s;}else {f = 0;free(s); \/\/ 释放 s}}r->next = NULL; \/\/ ...

一个有关C语言(数据结构)程序设计题 高手请帮忙,高分!
if(G.vexs[i]==c) return i;return -1;} \/\/创建无向网 void CreateUDN(MGraph &G){ int i,j,w,s1,s2;char a,b,temp;printf("输入顶点数和弧数:");scanf("%d%d",&G.vexnum,&G.arcnum);temp=getchar(); \/\/接收回车 G.vexs=(char *)malloc(G.vexnum*sizeof(char)); \/\/...

相似回答