数据结构与算法2-4 堆栈链式存储

链表中,只有一端进行插入与删除

在表头的位置,以避免需要知道实际数据长度

 

结构:

typedef struct Node()
{
    ElementType data;
    struct node *Next;
}List;
List *Ptrl;

 

构造:

List *empty()
{
    List *Ptrl;
    Ptrl=(List *)malloc(sizeof(List));
    Ptrl->Next=NULL;
    return Ptrl;
}

 

判断是否是空表

int isEmpty(List *Ptrl)
{
    return (Ptrl->Next==NULL);

}

 

插入:

 void Push(ElementType x,List *Ptrl)
 {
   List *temp;
   temp=(List *)malloc(sizeof(List));
   temp->data=x;
   temp->Next=Ptrl->next;
   Ptrl->Next=temp;
 }

 

删除:

 ElementType Pop(List *Ptrl)
 {   
     List *temp;
     ElementType returndata;
     if(isEmpty(Ptrl)) (printf("error");return NULL;)
     else {

         Ptrl->Next=temp;
         returndata=temp->data;
         Ptrl->Next=temp->next;
         free(temp);
         return returndata;
     }

 }

 

posted on 2017-07-11 12:07  guoshiyv  阅读(117)  评论(0编辑  收藏  举报

导航