大佬帮看看哪里错了
本帖最后由 wws741 于 2020-3-8 16:32 编辑链式队列,不知道哪里错了,编译运行出来没东西,按照视频打得码,我还专门换了vs打一遍,还是没有出来东西{:1_909:}
#include<stdio.h>
#include<stdlib.h>
//链式队列 链式+队列
//定义结构体
//定义链式
struct Node{
int data;
struct Node* next;
};
//创建结点
struct Node* creatnode(int data){
structNode* newnode=(structNode*)malloc(sizeof(structNode));
newnode->data=data;
newnode->next=NULL;
return newnode;
}
//定义队列结构
structdl{
struct Node* front;
struct Node* rear;
int dlsize;
};
//创建队列-》初始化队列
structdl* creatdl(){
structdl* DL=(structdl*)malloc(sizeof(structdl));
DL->front=DL->rear=NULL;
DL->dlsize=0;
return DL;
}
//入队
void push(structdl* DL,int data)
{
structNode* newnode=creatnode(data);
if(DL->dlsize==0)
{DL->front=newnode;}
else
{
DL->rear->next=newnode;
DL->rear=newnode;
DL->dlsize++;
}
}
//获取队头元素
int front(structdl* DL)
{
if(DL->dlsize==0)
{printf("DL IS NULL");return -1;}
else
{
return DL->front->data;}
}
//判断队列是否为空
int eledl(structdl* DL)
{
return DL->dlsize==0;
}
//出队
void dele(structdl * DL)
{
if(DL->dlsize==0)
{
printf("DL is null");
exit(0);
}
else
{
structNode* next=DL->front->next;
free(DL->front);
DL->front=next;
DL->dlsize--;
}
}
int main()
{
structdl* u=creatdl();
push(u,1);
push(u,2);
push(u,3);
while(!eledl(u))
{
printf("%d",front(u));
dele(u);
}
system("pause");
return 0;
} #include<stdio.h>
#include<stdlib.h>
//链式队列 链式+队列
//定义结构体
//定义链式
struct Node {
int data;
struct Node* next;
};
//定义队列结构
structqueue {
struct Node* front;
struct Node* rear;
int dlsize;
};
//创建结点
struct Node* creatnode(int data) {
structNode* newnode = (structNode*)malloc(sizeof(structNode));
newnode->data = data;
newnode->next = NULL;
return newnode;
}
//创建队列-》初始化队列
structqueue* createQueue() {
structqueue* DL = (structqueue*)malloc(sizeof(structqueue));
DL->front = DL->rear = NULL;
DL->dlsize = 0;
return DL;
}
//入队
void push(structqueue **DL, int data)
{
//创建结点
structNode* newnode = creatnode(data);
Node *TempFront = (*DL)->front;
Node *TempRear = (*DL)->rear;
//创建第一个值
if ((*DL)->dlsize == 0)
{
(*DL)->front = newnode;
(*DL)->front->next = NULL;
(*DL)->dlsize++;
return;
}
//创建n值
while (TempFront != NULL)
{
if (TempFront->next == NULL)
{
TempRear = (Node *)malloc(sizeof(Node));
TempRear = newnode;
TempFront->next = TempRear;
TempRear->next = NULL;
(*DL)->dlsize++;
return;
}
TempFront = TempFront->next;
}
}
//获取队头元素
int front(structqueue* DL)
{
if (DL->dlsize == 0)
{
printf("DL IS NULL"); return -1;
}
else
{
return DL->front->data;
}
}
//判断队列是否为空
int eledl(structqueue* DL)
{
return DL->dlsize == 0;
}
//出队
void dele(structqueue * DL)
{
if (DL->dlsize == 0)
{
printf("DL is null");
exit(0);
}
else
{
//structNode* next = DL->front->next;
Node *temp = DL->front->next;
free(DL->front);
DL->front = temp;
DL->dlsize--;
}
}
int main()
{
//创建队列
structqueue* u = createQueue();
//压入值
push(&u, 1);
push(&u, 2);
push(&u, 3);
while (!eledl(u))
{
printf("%d\n", front(u));
dele(u);
}
system("pause");
return 0;
} 古月不傲 发表于 2020-3-8 15:15
#include
#include
//链式队列 链式+队列
大佬,是入队的问题? 本帖最后由 古月不傲 于 2020-3-8 15:47 编辑
wws741 发表于 2020-3-8 15:36
大佬,是入队的问题?
是的 你第一次给头加入一个值 队列大小没有+1 下面加入第二个元素也不对 没有申请空间
其实方法有很多种 我只是按我想的那样实现的 可能不是我这样改的 古月不傲 发表于 2020-3-8 15:43
是的 你第一次给头加入一个值 队列大小没有+1 下面加入第二个元素也不对 没有申请空间
其实方法有很多种 ...
感谢大佬了,第一个给头加值,那里错了,第二个没错,我做了个if else,
页:
[1]