C语言数据结构中的栈该怎么理解

这期内容当中小编将会给大家带来有关C语言数据结构中的栈该怎么理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    栈的链式实现

    主要内容

    (1) 栈包含7个元素,依次是67,3,88,6,1,7,0,采用尾插入法创建 栈,为该栈设置两个指针,一个bottom和一个top指针;

    (2) 入栈函数push,该函数完成向栈中插入元素的功能,利用push函数,将数字-9插入到栈内,并将栈里的元素遍历;

    (3) 出栈函数pop,该函数完成从栈中删除元素的功能,利用pop函数,删除此时栈里面的3个元素,并遍历栈;

    (4) 函数length,求出此时栈内元素的个数。

    代码实现:

    #include<stdio.h>
    #include<stdlib.h>
    struct node
    {
    	int date;
    	struct node *next;
    };
    struct stack
    {
    	struct node *bottom;
    	struct node *top;
    }s;
    struct stack *creat(struct stack *s);              //创建栈
    void  push(struct stack *s,int e);   //入栈
    void print(struct stack *s);       //打印输出
    void pop(struct stack *s);         //出栈
    void length(struct stack *s);      //输出栈的长度
    int main()
    {
    	struct stack *s;
    	int e;
    	s=creat(s);
    	push(s,67);
    	push(s,3);
        push(s,88);
        push(s,6);
        push(s,1);
        push(s,7);
        push(s,0);
        printf("初始栈元素为:");
        print(s);
        printf("\n");
        printf("\n");
        push(s,-9);
        printf("插入元素后:");
        print(s);
        printf("\n");
        printf("\n");
        pop(s);
        pop(s);
        pop(s);
        printf("删除元素后:");
        print(s);
        printf("\n");
        printf("\n");
        length(s);
    	return 0;
    }
    struct stack *creat(struct stack *s)
    {
    	s=(struct stack *)malloc(sizeof(struct stack ));
    	s->bottom=s->top=(struct node *)malloc(sizeof(struct node));
    	s->top->next=NULL;
        s->bottom->next=NULL;
    	return s;
    }
    void  push(struct stack *s,int e)//进栈
    {
        struct node *p;
        p=(struct node *)malloc(sizeof(struct node));
    	p->date=e;
    	p->next=NULL;
    	s->top->next=p;
    	s->top=p;
    }
    void pop(struct stack *s)// 出栈
    {
       struct node *p,*q;
       p=s->bottom;
       while(p->next!=NULL)
         {
              q=p;
              p=p->next;
              
         }
        q->next=NULL;
        s->top=q;
    }
    void print(struct stack *s)//打印输出
    {
        struct node *p = s->bottom->next;
    	while(p!=NULL)
    	{
    		printf("%4d",p->date);
    		p=p->next;
    	}
    }
    
    void length(struct stack *s)//计算长度
    {
       struct node *p=s->bottom->next;
       int i=0;
       while(p!=NULL)
        {
            i++;
            p=p->next;
        }
       printf("此时栈的长度为:%4d",i);
    }

    上述就是小编为大家分享的C语言数据结构中的栈该怎么理解了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。