帶頭節點的不帶環的單向鏈式棧的基本操作

2021-08-18 13:17:30 字數 2052 閱讀 9610

完成鏈式棧 

1.初始化

2.銷毀

3.入棧

4.出棧

5.取棧頂元素

如果linkstack stack定義的stack是在棧上的,那麼它結構體裡面的head也是在棧上的;但如果stack是malloc出來的,像這樣(linkstack* stack=malloc( )),那head變數就在堆上。head究竟是在棧上還是堆上,得看它所屬的具體在哪。

seqstack.h

//單向帶頭結點的不帶環的單向鏈式表的頭插頭刪。head位置就是棧頂,尾部是棧底。

#pragma once

#include

#include

#include

typedef char linkstacktype;

typedef struct linknodelinknode;

typedef struct linkstacklinkstack;

void linkstackinit(linkstack* stack);//初始化函式

void destroynode(linknode* node);//銷毀函式

void linkstackprintchar(linkstack* stack, const char* msg);//列印函式

void linkstackpush(linkstack* stack, linkstacktype value);//入棧

void linkstackpop(linkstack* stack);//出棧

int linkstacktop(linkstack* stack, linkstacktype* value);//取棧頂元素

linkstack.c

#include "linkstack.h"

void linkstackinit(linkstack* stack)

stack->head.data = '\0';//.用於結構體指向的內容,->用於指標指向的內容,'\0'讓它隨便指向乙個數。data也可以不用賦值,不用的時候它被視為無效的元素

stack->head.next = null;

}void linkstackprintchar(linkstack* stack, const char* msg)

printf("  棧底");

}linknode* createnode(linkstacktype value)

void destroynode(linknode* node)

void linkstackpush(linkstack* stack, linkstacktype value)

linknode* newnode = createnode(value);

newnode->next = stack->head.next;

stack->head.next = newnode;

}void linkstackpop(linkstack* stack)

linknode* to_delete = stack->head.next;

stack->head.next = to_delete->next;

destroynode(to_delete);

}int linkstacktop(linkstack* stack, linkstacktype* value)

if (stack->head.next == 0)

*value = stack->head.next->data;

return 1;

test.c

#include "linkstack.h"

#define test_header printf("\n***************===%s***************===\n",__function__);

void testinit()

void testpush()

void testpop()

void testtop()

int main()

單向不帶頭結點不帶環的鍊錶實現

鍊錶有很多種類,單向,雙向,不帶頭,帶頭,不帶環,帶環,結合起來一共可以有八種鍊錶形式 今天我們來實現一種名字叫 單向不帶頭不帶環的鍊錶 下面就是每一部分的 實現 首先我們要做的就是函式的宣告,結構體的定義,標頭檔案的引用 pragma once define header printf n s n...

雙向帶環帶頭節點的鍊錶

建立乙個雙向鍊錶的節點 class listnode 關於頭插 如何將鍊錶列印出來 public void display system.out.println system.out.println 反向 system.out.print for listnode cur head.prev cur...

實驗2 不帶頭節點的單鏈表

編寫函式slnklist delx linklist head,datatype x 刪除不帶頭結點單鏈表head中第乙個值為x 的結點。並構造測試用例進行測試。include slnklist.h 請將本函式補充完整,並進行測試 linklist delx linklist head,dataty...