1. 程式人生 > >鏈棧的置空入棧,出棧,和返回棧頂元素操作

鏈棧的置空入棧,出棧,和返回棧頂元素操作

#include "stdio.h"
#include "stdlib.h"
#define N sizeof(struct stack)


typedef struct stack{
int data;
struct stack *next;
}*pstack;


//置空鏈棧
pstack empty(pstack top){
top = NULL;
printf("棧已經置空!\n");
return top;
}


//判斷棧空
void isempty(pstack top){


if (top == NULL)
printf("鏈棧為空!\n");
else
printf("鏈棧不為空!\n");
}


//入鏈棧
pstack push(pstack top){
pstack p;
int k;
p = (pstack)malloc(N);
printf("請輸入你想插入的資料:");
scanf("%d",&p->data);
p->next = top;
top = p;
return top;
}


//出鏈棧
pstack pop(pstack top){
pstack p;
if (top != NULL)
{
p = (pstack)malloc(N);
p = top;
top = top->next;
free(p);
}
else
printf("棧是空的,無法出棧!\n");
printf("出棧操作已完成!\n");
return top;
}


//返回棧頂元素
pstack getstacktop(pstack top){
return top;
}


//主函式
int main()
{
pstack top;
int n;
top = NULL;
do{
printf("***********************\n");
printf("* 1.置空鏈棧\n* 2.判斷鏈棧是否為空\n* 3.進棧操作\n* 4.出棧操作\n* 5.返回棧頂數字\n* 6.退出程式\n");
printf("***********************\n");
printf("請輸入你的選擇:\n");
scanf("%d",&n);
switch (n){
case 1:
empty(top);
break;
case 2:
isempty(top);
break;
case 3:
top=push(top);
break;
case 4:
top=pop(top);
break;
case 5:
if (top != NULL)
printf("棧頂元素是:%d\n", getstacktop(top)->data);
else
printf("棧為空!\n");
case 6:
break;
default:
printf("請輸入正確的選擇:\n");
}

} while (n!=6);
printf("程式已經結束!\n");
return 0;
}

相關推薦

返回元素操作

#include "stdio.h" #include "stdlib.h" #define N sizeof(struct stack) typedef struct stack{int data;struct stack *next; }*pstack; //置空鏈棧

順序返回元素

#include "stdio.h" #include "stdlib.h" #define MAXSIZE 100 #define OK 1 #define FALSE 0 //順序棧結構體 typedef struct stack{int data[MAXSIZE];i

劍指offer66題--Java實現c++實現python實現 21.的壓、彈序列

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列

劍指Offer-的壓、彈序列

span tac 比較 最終 urn color public turn i++ 題目: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該

劍指offer二十一之的壓、彈序列

img 完成 方法 [] 鏈接 span blog 分享 技術分享 一、題目   輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列

劍指Offer——的壓、彈序列

是否 blog color size cnblogs sta 例如 pop clas 題目描述: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2

[劍指offer] 的壓、彈序列

pub lock 之前 pre div ret order 判斷 第一個 題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧

的壓、彈序列

pop desc ++ vector 所有 top log subject tle 題目描述   輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,

ACM_的壓、彈序列

put 表示 整數 back 是不是 urn vector 位置 main 棧的壓入、彈出序列 Time Limit: 2000/1000ms (Java/Others) Problem Description: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判

劍指offer 22. 的壓、彈序列

原題 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個

的壓、彈序列 java

棧的壓入、彈出序列 java 題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能

【劍指Offer】21的壓、彈序列

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列

[劍指offer] -- 22.的壓、彈序列

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這

《劍指offer》系列 的壓、彈序列(Java)

連結 牛客:棧的壓入、彈出序列 題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,

劍指offer學習筆記(Python)--的壓、彈序列

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列

劍指Offer - 的壓、彈序列(Java實現)

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(

劍指Offer-31的壓、彈序列

題目: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩

《劍指offer》-- 的壓與彈序列

一、棧的壓入與彈出序列: 1、題目: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。 假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順

劍指offer{面試題22:的壓、彈序列}

解題思路: 模擬堆疊操作的過程,將原數列依次壓棧,把棧頂元素與所給出棧佇列相比,如果相同則出棧,如果不同則繼續壓棧,直到原數列中所有數字壓棧完畢。最後,檢測棧中是否為空,若空,說明出棧佇列可由原數列進行棧操作得到。否則,說明出棧佇列不能由原數列進行棧操作得到。 import java.u

劍指offer-21:的壓、彈序列

題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這