• 结构体变量初始化失败
  • 其它
    1.00元

main()函数中的结构体变量q调用initqueue()初始化失败了,不知道为什么,我明明用了地址来调用初始化函数的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int elemtype;
struct Node {
   struct Node* next;
   elemtype data;
};
typedef struct Node node;
node* getnode(elemtype x, node* nextptr) {
   node* n;
   n = (node*)malloc(sizeof(node));
   n->data = x;
   n->next = nextptr;
   return n;
}

typedef struct {
   node* front;
   node* rear;
   int length;

}swlqueue;

void  initqueue(swlqueue* qd) {
   qd = (swlqueue*)malloc(sizeof(swlqueue));
   qd->front = getnode(0, NULL);
   qd->rear = qd->front;
   qd->length = 0;
}

void insertafter(node* n, node* p) {
   p->next = n->next;
   n->next = p;
}



void in(swlqueue* q, elemtype x) {
   node* newnode;
   newnode = getnode(x, NULL);
   if (q->length == 0)
       insertafter(q->front, newnode);
   insertafter(q->rear, newnode);
   q->rear = newnode;
   q->length++;
}

elemtype out(swlqueue* q) {
   node* n;
   elemtype x;
   x = ((q->front)->next)->data;
   n = q->front;
   q->front = (q->front)->next;
   free(n);
   q->length--;
   return x;
}

int main() {
   swlqueue q;
   initqueue(&q);
   int array[20];
   memset(array, 0, sizeof(array));
   for (int i = 0; i <= 50; i++)
       in(&q, i);
   for (int j = 0; j < 20; j++)
       array[19 - j] = out(&q);
   for (int k = 0; k <= 19; k++)
       printf("%d\n", array[k]);
   system("pause");
   return 0;


}


  • Caroline    2020-05-12 10:21:07
  • 阅读 809    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信