源码如下:
- #include
- #include
- struct node
- {
- int info;
- struct node *link;
- };
- struct node *top = NULL, *temp;
- void push(struct node *);
- void pop(struct node *);
- void display(struct node *);
-
- int main()
- {
- int x = 0, item;
- printf("\t****stack using linked list****\n");
- while (x != 4)
- {
- printf("\n1. Push\n2. Pop\n3. Display\n4. Exit\n");
- printf("Enter your choice: ");
- scanf("%d", &x);
- switch (x)
- {
- case 1:
- push(top);
- break;
- case 2:
- pop(top);
- break;
- case 3:
- display(top);
- break;
- case 4:
- return 0;
- }
- }
- }
-
- void push(struct node *p)
- {
- int item;
- struct node *temp;
- temp = (struct node *)malloc(sizeof(struct node));
- printf("\nEnter element to be inserted: ");
- scanf("%d", &item);
- temp->info = item;
-
- temp->link = top;
- top = temp;
-
- printf("Inserted succesfully.\n");
- }
-
- void pop(struct node *p)
- {
- int item;
- struct node *temp;
-
- if (top == NULL)
- printf("\nStack is empty.\n");
- else
- {
- item = top->info;
- temp = top;
- top = top->link;
- free(temp);
- printf("\nElement popped is %d.\n", item);
- }
- }
-
- void display(struct node *p)
- {
- if (top == NULL)
- printf("\nStack is empty.\n");
- else
- {
- printf("\nElements in the stack are:\n");
- while (p != NULL)
- {
- printf("\t%d\n", p->info);
- p = p->link;
- }
- // printf("%d\n",p->info);
- }
- }
测试运行:
****stack using linked list****
1. Push
2. Pop
3. Display
4. Exit
Enter your choice: 1
Enter element to be inserted: 88 //入栈
Inserted succesfully.
1. Push
2. Pop
3. Display
4. Exit
Enter your choice: 3
Elements in the stack are:
88
1. Push
2. Pop
3. Display
4. Exit
Enter your choice: 1
Enter element to be inserted: 22 //入栈
Inserted succesfully.
1. Push
2. Pop
3. Display
4. Exit
Enter your choice: 3
Elements in the stack are:
22
88
1. Push
2. Pop
3. Display
4. Exit
Enter your choice: 2
Element popped is 22. //出栈
1. Push
2. Pop
3. Display
4. Exit
Enter your choice: 3
Elements in the stack are:
88