| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 377 人关注过本帖
标题:关于C数据结构队列的一个问题
只看楼主 加入收藏
fluxaysss
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-24
结帖率:0
收藏
已结贴  问题点数:10 回复次数:1 
关于C数据结构队列的一个问题
写一个C语言的信息管理程序,选用队列结构,输入一批人员数据(姓名 学号 身高......)
可添加 删除数据 并查看整体数据

想问一下,能不能定义一个结构体变量,并给变量赋值(姓名 学号 身高等)
然后将这个结构体变量 作为一个参数, 入队 出队 并显示

#include<stdio.h>

struct STUDENT
{
  int id[10];
  int name[10];
  int height[3];
  
}stu;

typedef struct queuenode
{
  int data;
  struct queuenode *next;
}queuenode;

typedef struct
{
  queuenode *front,*rear;
}linkqueue;

void InX()
{
      printf("\t请输入学生的数据");
    printf("\t学号:");
    scanf("%s",stu.id);
    printf("\t姓名:");
    scanf("%s",stu.name);
    printf("\t身高:");
      scanf("%d",&stu.height);
}

void InQueue(linkqueue *q)
{
    int x;
  queuenode *p=new queuenode;
  printf("\n\t\t请键入一个整数: ");
  p->data=x;
  p->next=NULL;
  if(q->front==NULL)
    q->front=p;
  else
    q->rear->next=p;
  q->rear=p;
  if(p)
    printf("\n\t\t %d 进队成功! ",x);
}

int OutQueue(linkqueue *q,int *v)                       //出队函数
{
  queuenode *p;
  if(q->front==NULL)
    return 0;
  else
  {
    p=q->front;
    *v=p->data;
    q->front=p->next;
    if (q->front==NULL)
      q->rear=NULL;
    delete p;
    return 1;
  }
}
void ShowQueue(linkqueue *q)    //  显示队列函数
{
  queuenode *p=q->front;
  if(p==NULL)
    printf("\n\t\t 列队为空!\n");
  else
  {
    printf("\n\t\t列队元素为: ");
    while(p!=NULL)
    {
      printf("%6d",p->data);
        p=p->next;
    }
    printf("\n");
  }
}

void main()
{linkqueue *q=new linkqueue;
int val,i=1;
char w,choice;
q->front=q->rear=NULL;
while(i)
{
  printf("\n");
  printf("\n\t\t         列队子系统         ");
    printf("\n\t\t****************************");
    printf("\n\t\t*      1--------写入       *");
  printf("\n\t\t*      2--------入队       *");
    printf("\n\t\t*      3--------出队       *");
  printf("\n\t\t*      4--------显示       *");
  printf("\n\t\t*      0--------返回       *");
  printf("\n\t\t****************************");
  printf("\n\t\t 请选择 (0--3):");
  scanf("%c",&choice);
  getchar();
  switch(choice)
  {
            case '1':
      InX();
          case '2':
      InQueue(q);
      break;
          case '3':
      if(OutQueue(q,&val)==0)
        printf("\n\t\t列队为空!\n");
      else
        printf("\n\t\t出队元素为: %d",val);
      break;
   
      case '4':
      ShowQueue(q);
      break;
      
    case '0':
      i=0;
      break;
    default:;
  }
  if(choice=='1'||choice=='2'||choice=='3')
  {
    printf("\n\n\t\t 按回车键继续,按任意键返回主菜单\n");
    w=getchar();
    if (w!='\xA')
    {
      i=0;
    }
  }
}
}
-------------------------
哪位大侠能帮我完善下
搜索更多相关主题的帖子: 结构体 姓名 
2011-01-10 13:52
buffer
Rank: 5Rank: 5
等 级:职业侠客
帖 子:73
专家分:326
注 册:2010-12-31
收藏
得分:10 
可以啊,把结构体queuenode的数据成员data的类型改为struct STUDENT data就行了
2011-01-10 16:47
快速回复:关于C数据结构队列的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028033 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved