学习数据结构stack时出现stack.exe一停止工作的错误的处理

    技术2022-05-20  38

    有错的代码:

    # include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct NODE {     int data;     struct NODE *pNext; }NODE,*PNODE; typedef struct stack {     PNODE pTop;     PNODE pBottom; }STACK,*PSTACK; void init(PSTACK); void push(PSTACK,int); void traverse(PSTACK pS); int main(void) {     STACK S;     init(&S);     push(&S,1);     push(&S,2);     push(&S,3);     push(&S,4);     push(&S,5);     push(&S,6);     push(&S,7);     push(&S,8);     traverse(&S);     return 0; } void init(PSTACK pS) {     pS ->pTop = (PNODE)malloc(sizeof(NODE));     if(NULL == pS ->pTop)     {         printf("动态内存分配失败!/n");         exit(-1);     }     else     {          pS ->pTop = pS ->pBottom; //错误就出在这里         pS ->pTop ->pNext = NULL;     } } void push(PSTACK pS,int val) {     PNODE pNew = (PNODE)malloc(sizeof(NODE));     pNew ->data = val;     pNew ->pNext = pS ->pTop;     pS ->pTop = pNew;     return; } void traverse(PSTACK pS) {     PNODE p = pS ->pTop;     while(p != pS ->pBottom)     {         printf("%d ",p ->data);         p = p ->pNext;     }     printf("/n");     return; }

    改正后的代码:

    # include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct NODE {     int data;     struct NODE *pNext; }NODE,*PNODE; typedef struct stack {     PNODE pTop;     PNODE pBottom; }STACK,*PSTACK; void init(PSTACK); void push(PSTACK,int); void traverse(PSTACK pS); int main(void) {     STACK S;     init(&S);     push(&S,1);     push(&S,2);     push(&S,3);     push(&S,4);     push(&S,5);     push(&S,6);     push(&S,7);     push(&S,8);     traverse(&S);     return 0; } void init(PSTACK pS) {     pS ->pTop = (PNODE)malloc(sizeof(NODE));     if(NULL == pS ->pTop)     {         printf("动态内存分配失败!/n");         exit(-1);     }     else     {         pS ->pBottom = pS ->pTop;//在这里把错误改过来后就可以了         pS ->pTop ->pNext = NULL;     } } void push(PSTACK pS,int val) {     PNODE pNew = (PNODE)malloc(sizeof(NODE));     pNew ->data = val;     pNew ->pNext = pS ->pTop;     pS ->pTop = pNew;     return; } void traverse(PSTACK pS) {     PNODE p = pS ->pTop;     while(p != pS ->pBottom)     {         printf("%d ",p ->data);         p = p ->pNext;     }     printf("/n");     return; }


    最新回复(0)