新手求学,大家看到的能帮帮就帮帮
各位好,刚刚学C也不久,在用的时候出现了很多的问题,还望大家帮帮忙!这个程序的功能就是把100个以内的字母存入队列中(这是用链式存储结构的队列,后面我就不多说了),进过我的重复的测试和修改,发现没次输出的结果都是重复输出“没有生产计划”这个结果(看了代码你就明白了)!根据我的猜测应该是入队的函数有问题,可是我一把函数改动,就会报错!
#include<stdio.h>
#include<malloc.h>
#define maxsize 100
typedef struct node1
{
char data;
struct node1 *next;
}LINKQLIST;
typedef struct
{
LINKQLIST *front,*rear;
}production;//生产
void initlinkqueuep(production *q)//初始化
{
q->front=(LINKQLIST *)malloc(sizeof(LINKQLIST));
(q->front)->next=NULL;
q->rear=q->front;
}
char getlinkfrnetp(production *q)//数据读取
{
char v;
if(q->front==q->rear)
printf("没有生产计划\n");
else
v=(q->front)->next->data;
return v;
}
void enlinkqueuep(production *q,int x)//插入数据
{
(q->rear)->next =(LINKQLIST *)malloc(sizeof(LINKQLIST));
q->rear=(q->rear)->next;
(q->rear)->next=NULL;
}
void main()//这个主函数的功能是 初始化队列===》将一组数据存入队列中===》输出队列中的数据
{
production q;
int i=0;
char ch[maxsize];
//initlinkqueuep(&q) //初始化
//printf("初始化成功!\n");
printf("请输入生产计划:");
for(i=1;i<maxsize;i++)
{
scanf("%3c",&ch);//输入字母
if(ch[i]='\n') //当输入‘\n’输入循环结束
break;
else
{
enlinkqueuep(&q,i);
}
}
printf("返回值:");
for(i=0;i<maxsize;i++)
{
ch[i]=getlinkfrnetp(&q);
if(ch[i]='\0')//若返回值是'\0'则结束循环,不过根据我的测试这个循环控制不了,不过我字母修改输出次数都没有变
{
i=maxsize;
printf("%d",i);
break;
}
else
printf("%2c",ch[i]);
}
}