2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 堆栈--后进先出

堆栈--后进先出

时间:2019-07-07 06:50:42

相关推荐

堆栈--后进先出

//堆栈–>后进先出,先进后出

#include<stdio.h>

#include<stdlib.h>

struct stackNode{

int data;

struct stackNode *nextPtr;

};

typedef struct stackNode Stacknode;

typedef Stacknode* StacknodePtr;

void push(StacknodePtr *topPtr, int number);

int pop(StacknodePtr *topPtr);

void printList(StacknodePtr topPtr);

int isEmpty(StacknodePtr topPtr);

int main()

{

StacknodePtr startPtr = NULL;

int choice;

int value;

printf("Enter your choice from the following.\n"" 1 to fill the number at the list top.\n"" 2 to remove the number from the list top.\n"" 3 to end.\n? ");scanf("%d", &choice);while(choice != 3){switch(choice){case 1:printf("Enter an integer: \n");scanf("%d", &value);push(&startPtr, value);printf("%d has been added into the list.\n"" The list after adding a value is\n", value);printList(startPtr);break;case 2:if(!isEmpty(startPtr)){printf("%d has been deleted from the list.\n", pop(&startPtr));printf("The list after deleted is :\n");printList(startPtr);}else{printf("The list is empty.\n");printf("Please choose a command again.\n");}break;default:printf("You enter a wrong command,\n");printf("Please choose a command again.\n");break;}printf("? ");scanf("%d", &choice);}printf("End of run.\n");return 0;

}

void push(StacknodePtr *topPtr, int number)

{

StacknodePtr newPtr; //用于存放要放入的结构(节点)

newPtr = (StacknodePtr)malloc(sizeof(Stacknode));if(newPtr == NULL){printf("No memmery is available.\n");} else{newPtr->data = number;newPtr->nextPtr = *topPtr;*topPtr = newPtr;}

}

int pop(StacknodePtr *topPtr)

{

int backnumber;

StacknodePtr tempPtr;

tempPtr = *topPtr;backnumber = tempPtr->data;*topPtr = (*topPtr)->nextPtr;free(tempPtr);return backnumber;

}

void printList(StacknodePtr topPtr)

{

if(topPtr == NULL){

printf(“NULL\n”);

}

else{

while(topPtr != NULL){

printf("%d–>", topPtr->data);

topPtr = topPtr->nextPtr;

}

printf(“NULL\n”);

}

}

int isEmpty(StacknodePtr topPtr)

{

if(topPtr == NULL){

return 1;

}

else{

return 0;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。