[关闭]
@chawuciren 2018-11-21T13:42:27.000000Z 字数 949 阅读 578

CSI


链表实现

所用的结构体,通过index可以判断栈空(好吧这个并没有什么用),data存符号或者数字,next指针连接链表

  1. typedef struct linklist{
  2. int data;
  3. struct *linklinst next;
  4. }linklist;

初始化

为栈的第一个节点分配一段空间,并且让他指向NULL,返回值应该是NULL,参数应该是这个节点

  1. linklist* Initialization(){
  2. linklist *new=(linklist*)malloc(sizeof(linklist));
  3. new->next=NULL;
  4. return new;
  5. }

进栈

将一个符号或者数字进栈,参数是符号或者数字,返回的是一个栈的下一个节点?或者不返回(还是不返回比较好用)
怎么连接,真是个问题

  1. bool push(linklist *stacknode,char x){
  2. linklist *new=(linklist*)malloc(sizeof(linklist));
  3. new->data=x;
  4. new->next=stacknode;
  5. stacknode->next=new;//为什么是next?
  6. return 1;
  7. }

出栈

判断栈空。
将栈顶元素返回,并且销毁这个节点。参数是栈的节点,返回值是符号或者数字。

  1. linklist* pop(linklist *stacknode){
  2. if(isEmpty(stacknode))
  3. return NULL;
  4. linklist *new=(linklist*)malloc(sizeof(linklist));
  5. new=stacknode;
  6. stacknode=stacknode->next;
  7. free(new);
  8. return stacknode;
  9. }

栈空

判断栈是不是空的。怎么实现?

  1. bool isEmpty(linklist *stacknode){
  2. if(stacknode->next==NULL)
  3. return 1;//isEmpty
  4. return 0;
  5. }

销毁栈

判断栈空
一个接一个地把节点free掉。

  1. void destroy(linklist *stacknode){
  2. while(stacknode->next!=NULL){
  3. pop(stacknode);
  4. }
  5. return;
  6. }

取栈顶

判断栈空
参数应该是栈的节点。
返回栈顶元素。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注