欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例

 更新時(shí)間:2017年08月28日 09:57:11   作者:愛思考的小鳥  
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例的相關(guān)資料,需要的朋友可以參考下

C語言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例

以下是“使用鏈表模擬棧”的簡(jiǎn)單示例:

1. 用C語言實(shí)現(xiàn)的版本

#include<stdio.h> 
#include<stdlib.h> 
 
typedef char datatype; 
typedef struct node{ 
  datatype data; 
  struct node *next; 
} stack; 
 
stack* m_stack = NULL; 
 
/* 創(chuàng)建鏈表,從表頭插入新元素 */ 
void creat(void); 
/* 使棧s為空 */ 
void MakeNull(); 
/* 判斷棧是否為空 */ 
bool Empty(); 
//取出棧頂元素  
int Top(datatype* value); 
//彈出棧頂元素 
void Pop(); 
//入棧,在頭部插入新元素 
void Push(datatype x); 
 
/* 創(chuàng)建鏈表,從表頭插入新元素 */ 
void creat() 
{ 
  char ch; 
 
  printf("請(qǐng)輸入字符序列:\n"); 
  ch = getchar(); 
  while (ch != '\n') 
  { 
    Push(ch); 
    ch = getchar(); 
  } 
} 
 
/* 使棧s為空 */ 
void MakeNull() 
{ 
  stack *p = m_stack; 
  while (p != NULL) 
  { 
    m_stack = m_stack->next; 
    free(p);/*釋放空間*/ 
    p = m_stack; 
  } 
} 
 
/* 判斷棧是否為空 */ 
bool Empty() 
{ 
  return (m_stack == NULL); 
} 
//取出棧頂元素  
int Top(datatype* value) 
{ 
  if (Empty())/*s為空棧,直接跳出,提示出錯(cuò)信息*/ 
  { 
    return -1; 
  } 
  else 
  { 
    *value = m_stack->data; 
    return 1; 
  } 
} 
 
//彈出棧頂元素 
void Pop() 
{ 
  stack *p; 
  if (Empty()) /*s為空棧,直接跳出,提示出錯(cuò)信息*/ 
  { 
    printf("不能彈出,棧為空."); 
  } 
  else 
  { 
    p = m_stack;; 
    m_stack = m_stack->next; 
    free(p);/*釋放棧頂空間*/ 
    printf("彈出成功\n"); 
  } 
} 
 
//入棧,在頭部插入新元素 
void Push( datatype x) 
{ 
  stack *p; 
  p = (stack*)malloc(sizeof(stack)); 
  p->data = x; 
  p->next = m_stack; 
  m_stack = p; 
} 
 
void main() 
{ 
  char m_top; 
 
  /* 創(chuàng)建鏈表,從表頭插入新元素 */ 
  creat(); 
 
  if (!Empty()) //判斷棧是否為空 
  { 
    int res = Top(&m_top); 
    if (res == -1) 
    { 
      printf("棧為空,未能獲取棧頂元素\n"); 
    } 
    else 
    { 
      printf("棧頂元素為: %c\n", m_top); 
    } 
    Pop(); 
  } 
  else 
  { 
    printf("棧為空\n"); 
  } 
 
  MakeNull(); 
} 

運(yùn)行結(jié)果如下圖所示:

以上就是數(shù)據(jù)結(jié)構(gòu)鏈表模擬棧的實(shí)例,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C++?smart?pointer全面深入講解

    C++?smart?pointer全面深入講解

    一般在C/C++中,如果我們使用了pointer來指向某塊heap區(qū)域,當(dāng)不再需要這塊區(qū)域的時(shí)候,我們需要手動(dòng)刪除它。如果忘了的話,就會(huì)產(chǎn)生memory?leak
    2022-08-08
  • C++之list容器介紹及使用方式

    C++之list容器介紹及使用方式

    這篇文章主要介紹了C++之list容器介紹及使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解C++如何實(shí)現(xiàn)在Word文檔中創(chuàng)建列表

    詳解C++如何實(shí)現(xiàn)在Word文檔中創(chuàng)建列表

    這篇文章主要為大家詳細(xì)介紹了介紹如何使用C++在Word文檔中創(chuàng)建編號(hào)列表、項(xiàng)目符號(hào)列表和多級(jí)列表,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • C++超詳細(xì)講解貪心策略的設(shè)計(jì)及解決會(huì)場(chǎng)安排問題

    C++超詳細(xì)講解貪心策略的設(shè)計(jì)及解決會(huì)場(chǎng)安排問題

    為了更好的應(yīng)對(duì)《算法設(shè)計(jì)與分析》這門課程,我把書上以及老師講過的案例都詳細(xì)的做一個(gè)重現(xiàn)及解剖,讓你熟記每一個(gè)潛在的考點(diǎn),希望能給大家?guī)椭?/div> 2022-05-05
  • C++之如何設(shè)置字體顏色

    C++之如何設(shè)置字體顏色

    很多C++的初學(xué)者發(fā)現(xiàn),控制臺(tái)的顏色永遠(yuǎn)是黑白的,這未免太單調(diào)了,怎么才能使字體像那些軟件一樣呈彩色呢?現(xiàn)在,我們就將學(xué)習(xí)C++ 設(shè)置字體顏色的方法
    2023-08-08
  • 使用C++繪制GDI位圖的基本編寫實(shí)例

    使用C++繪制GDI位圖的基本編寫實(shí)例

    這篇文章主要介紹了使用C++繪制GDI位圖的基本編寫實(shí)例,一般來說適用于Windwos下的C++的GUI編程,需要的朋友可以參考下
    2015-12-12
  • Qt實(shí)現(xiàn)編輯數(shù)據(jù)庫數(shù)據(jù)的方法詳解

    Qt實(shí)現(xiàn)編輯數(shù)據(jù)庫數(shù)據(jù)的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Qt是如何實(shí)現(xiàn)編輯數(shù)據(jù)庫數(shù)據(jù)的,文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們深入了解QT有一定的幫助,感興趣的小伙伴可以了解一下
    2023-02-02
  • 深入探究C/C++中互斥量(鎖)的實(shí)現(xiàn)原理

    深入探究C/C++中互斥量(鎖)的實(shí)現(xiàn)原理

    ? 互斥量是一種同步原語,用于保護(hù)多個(gè)線程同時(shí)訪問共享數(shù)據(jù),互斥量提供獨(dú)占的、非遞歸的所有權(quán)語義,本文將和大家一起深入探究C/C++中互斥量(鎖)的實(shí)現(xiàn)原理,感興趣的小伙伴跟著小編一起來看看吧
    2024-06-06
  • 用C++實(shí)現(xiàn)SLR語法分析程序

    用C++實(shí)現(xiàn)SLR語法分析程序

    大家好,本篇文章主要講的是用C++實(shí)現(xiàn)SLR語法分析程序,感興趣的同學(xué)趕緊來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C++設(shè)計(jì)模式之模板方法模式

    C++設(shè)計(jì)模式之模板方法模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之模板方法模式,本文講解了什么是模板方法模式、模板方法模式的UML類圖、模板方法模式的使用場(chǎng)合等內(nèi)容,需要的朋友可以參考下
    2014-10-10

最新評(píng)論