wws741 发表于 2020-3-8 13:40

大佬帮看看哪里错了

本帖最后由 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;
}

古月不傲 发表于 2020-3-8 15:15

#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;
}

wws741 发表于 2020-3-8 15:36

古月不傲 发表于 2020-3-8 15:15
#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,
页: [1]
查看完整版本: 大佬帮看看哪里错了