吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1039|回复: 4
收起左侧

[已解决] 大佬帮看看哪里错了

[复制链接]
wws741 发表于 2020-3-8 13:40
本帖最后由 wws741 于 2020-3-8 16:32 编辑

链式队列,不知道哪里错了,编译运行出来没东西,按照视频打得码,我还专门换了vs打一遍,还是没有出来东西


[C] 纯文本查看 复制代码
#include<stdio.h>
#include<stdlib.h>
//链式队列   链式+队列
//定义结构体
//定义链式
struct Node{
        int data;
        struct Node* next;
};
//创建结点
struct Node* creatnode(int data){
struct  Node* newnode=(struct  Node*)malloc(sizeof(struct  Node));
newnode->data=data;
newnode->next=NULL;
return newnode;
}
//定义队列结构
struct  dl{
        struct Node* front;
        struct Node* rear;
        int dlsize;
};
//创建队列-》初始化队列
struct  dl* creatdl(){
        struct  dl* DL=(struct  dl*)malloc(sizeof(struct  dl));
        DL->front=DL->rear=NULL;
        DL->dlsize=0;
        return DL;
}
//入队
void push(struct  dl* DL,int data)
{
        struct  Node* newnode=creatnode(data);
        if(DL->dlsize==0)
        {DL->front=newnode;}
        else
        {
                DL->rear->next=newnode;
                DL->rear=newnode;
                DL->dlsize++;
        }

}
//获取队头元素
int front(struct  dl* DL)
{
        if(DL->dlsize==0)
        {printf("DL IS NULL");return -1;}
        else
        {
                return DL->front->data;}
}
//判断队列是否为空
int eledl(struct  dl* DL)
{
        return DL->dlsize==0;
}
//出队
void dele(struct  dl * DL)
{
        if(DL->dlsize==0)
        {
                printf("DL is null");
                exit(0);
        }
        else
        {
                struct  Node* next=DL->front->next;
                free(DL->front);
                DL->front=next;
                DL->dlsize--;
        }
}
 int main()
{
        struct  dl* u=creatdl();
        push(u,1);
        push(u,2);
        push(u,3);
        while(!eledl(u))
        {
                printf("%d",front(u));
                dele(u);
        }
        system("pause");
        return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

古月不傲 发表于 2020-3-8 15:15
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<stdlib.h>
//链式队列   链式+队列
//定义结构体
//定义链式
struct Node {
	int data;
	struct Node* next;
};
//定义队列结构
struct  queue {
	struct Node* front;
	struct Node* rear;
	int dlsize;
};

//创建结点
struct Node* creatnode(int data) {
	struct  Node* newnode = (struct  Node*)malloc(sizeof(struct  Node));
	newnode->data = data;
	newnode->next = NULL;
	return newnode;
}
//创建队列-》初始化队列
struct  queue* createQueue() {
	struct  queue* DL = (struct  queue*)malloc(sizeof(struct  queue));
	DL->front = DL->rear = NULL;
	DL->dlsize = 0;
	return DL;
}
//入队
void push(struct  queue **DL, int data)
{
	//创建结点
	struct  Node* 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(struct  queue* DL)
{
	if (DL->dlsize == 0)
	{
		printf("DL IS NULL"); return -1;
	}
	else
	{
		return DL->front->data;
	}
}
//判断队列是否为空
int eledl(struct  queue* DL)
{
	return DL->dlsize == 0;
}
//出队
void dele(struct  queue * DL)
{
	if (DL->dlsize == 0)
	{
		printf("DL is null");
		exit(0);
	}
	else
	{
		//struct  Node* next = DL->front->next;
		Node *temp = DL->front->next;
		free(DL->front);
		DL->front = temp;
		DL->dlsize--;
	}
}
int main()
{
	//创建队列
	struct  queue* 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;
}
 楼主| wws741 发表于 2020-3-8 15:36
古月不傲 发表于 2020-3-8 15:15
[mw_shl_code=c,true]#include
#include
//链式队列   链式+队列

大佬,是入队的问题?
古月不傲 发表于 2020-3-8 15:43
本帖最后由 古月不傲 于 2020-3-8 15:47 编辑
wws741 发表于 2020-3-8 15:36
大佬,是入队的问题?

是的 你第一次给头加入一个值 队列大小没有+1 下面加入第二个元素也不对 没有申请空间
其实方法有很多种 我只是按我想的那样实现的 可能不是我这样改的
 楼主| wws741 发表于 2020-3-8 16:31
古月不傲 发表于 2020-3-8 15:43
是的 你第一次给头加入一个值 队列大小没有+1 下面加入第二个元素也不对 没有申请空间
其实方法有很多种 ...

感谢大佬了,第一个给头加值,那里错了,第二个没错,我做了个if else,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表