C語言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實例
以下是“使用鏈表模擬棧”的簡單示例:
1. 用C語言實現(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("請輸入字符序列:/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為空棧,直接跳出,提示出錯信息*/   {     return -1;   }   else   {     *value = m_stack->data;     return 1;   } }  //彈出棧頂元素 void Pop() {   stack *p;   if (Empty()) /*s為空棧,直接跳出,提示出錯信息*/   {     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(); } 運行結(jié)果如下圖所示:

以上就是數(shù)據(jù)結(jié)構(gòu)鏈表模擬棧的實例,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選