精华内容
下载资源
问答
  • 1.栈的建立和输出,入栈出栈。2.链栈出栈和入栈。3.数组储存栈和结构体储存栈。4.动态栈和静态栈
  • 顺序栈和链栈入栈和出栈操作

    千次阅读 2018-08-04 17:10:45
    int ListStackPush(StackList *s,int num)//入栈 { StackNode pnew = (StackNode)malloc(sizeof(struct Stacknode));//生成一个新的结点 pnew->data = num; pnew->next = s->top; s->top = pnew; s->count++;...

     顺序栈

    #include <stdio.h>
    #include <stdlib.h>
    
    #define Maxsize 5
    
    typedef int Elem;
    
    typedef struct{
    	Elem data[Maxsize];
    	int top;
    } SqStack;
    
    typedef SqStack * Stack;
    
    int InitStack(Stack s)
    {
    	s->top = -1;
    	return 1;
    }
    
    int StackPush(Stack s,Elem num)
    {
    	if(s->top == Maxsize - 1)
    	{
    		printf("栈满!");
    		return 0;
    	}
    	
    	s->top++;
    	s->data[s->top] = num;
    }
    
    int StackPop(Stack s, Elem *num)
    {
    	if(s->top == -1)
    	{
    		printf("栈空!");
    		return 0;
    	}
    	
    	*num = s->data[s->top];
    	s->top--;
    	
    	printf("%3d",*num);
    }
    
    int main()
    {
    	Stack head = (Stack)malloc(sizeof(SqStack));
    	int i;
    	int e;
    	
    	InitStack(head);
    	
    	for(i = 0; i < Maxsize; i++)
    	{
    		StackPush(head,i);
    	}
    	
    	for(i = 0; i < Maxsize; i++)
    	{
    		StackPop(head,&e);//此处传&e 与值传递和地址传递有关,若是值传递,则在函数调用后会立即释放
    	}
    	printf("\n");
    	
    	return 0;
    }
    

    链栈

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Stacknode //栈结点
    {
    	int data;
    	struct StackNode *next;
    }*StackNode;
    
    typedef struct Stacklist //链表结构
    {
    	StackNode top;
    	int count;
    }StackList;
    
    int InitStack(StackList *s)//初始化
    {
    	s->top = NULL;//头指针即栈顶,置空
    	return 1;
    }
    
    int ListStackPush(StackList *s,int num)//入栈
    {
    	StackNode pnew = (StackNode)malloc(sizeof(struct Stacknode));//生成一个新的结点
    	
    	pnew->data = num;
    	pnew->next = s->top;
    	s->top = pnew;
    	s->count++;	
    	
    	printf("%3d",num);
    }
    
    int ListStackPop(StackList *s,int *num)
    {
    	StackNode p;
    	
    	if(s->top == NULL)
    	{
    		printf("栈空!\n");
    		return 0;
    	}
    	
    	*num = s->top->data;
    	p = s->top;
    	s->top = s->top->next;
    	free(p);
    	s->count--;
    	
    	printf("%3d",*num);
    }
    
    int main()
    {
    	StackList *head = (StackList*)malloc(sizeof(struct Stacklist));//链式结构的头指针
    	int i;
    	int e;
    	
    	InitStack(head);
    	
    	for(i = 0; i < 5; i++)
    	{
    		ListStackPush(head,i);
    	}	
    	printf("\n");
    	
    	for(i = 0; i < 5; i++)
    	{
    		ListStackPop(head,&e);//此处传&e 与值传递和地址传递有关,若是值传递,则在函数调用后会立即释放
    	}
    	printf("\n");
    	
    	return 0;
    }

     

    展开全文
  • 链栈——入栈和出栈

    2020-03-23 18:27:49
    出入栈跟单链表的头插法基本是一样的 ,不过对头插法有了更深的理解 : 表头是不动的,初始指向空,插入时,新建的节点真的就在表头与NULL之间插入,以后再插入的时候都是.../*链栈的进栈和出栈*/ #include<stdi...

    栈 和 双端栈:

    出入栈跟单链表的头插法基本是一样的 ,不过对头插法有了更深的理解 :

    表头是不动的,初始指向空,插入时,新建的节点真的就在表头与NULL之间插入,以后再插入的时候都是在表头与第一个节点之间插入的。可以参考https://blog.csdn.net/DREAM_yao/article/details/104759320   链表头插法

    /*链栈的进栈和出栈*/
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    struct Stack
    {
        int data;
        Stack *nex;
    };
    /*相当于头插法*/
    void push_stack(Stack *stack1,int x)
    {
        Stack *temp = new Stack;
        temp->data=x;
        temp->nex=stack1->nex;
        stack1->nex=temp;
    }
    void pop_stack(Stack *stack1)
    {
        stack1=stack1->nex;
        while(stack1)
        {
            printf("%d\n",stack1->data);
            stack1=stack1->nex;/*出栈*/
        }
    }
    int main()
    {
        Stack *stack1 = new Stack;
        stack1->nex=NULL;
        int x;
        for(int i=1; i<=5; i++)
        {
            scanf("%d",&x);
            push_stack(stack1,x);
        }
        pop_stack(stack1);
    
        return 0;
    }
    

     

    展开全文
  • 链栈入栈和出栈代码Here are three stories we published this week that are worth your time: 这是我们本周发布的三个值得您关注的故事: Full-stack development is alive and well. And for good reasons: 5 ...

    链栈的入栈和出栈代码

    Here are three stories we published this week that are worth your time:

    这是我们本周发布的三个值得您关注的故事:

    1. Full-stack development is alive and well. And for good reasons: 5 minute read

      全栈开发仍然有效。 并出于充分的理由: 5分钟阅读

    2. The 100% correct way to do CSS breakpoints: 7 minute read

      做CSS断点的100%正确方法: 7分钟阅读

    3. <table> prejudice and HTML xenophobia: 4 minute read

      <table>偏见和HTML xenoph obia:阅读4分钟

    Bonus: Our community designed laptop stickers. Get all 4 with free worldwide shipping.

    奖励:我们的社区设计了笔记本电脑贴纸。 使用全球免费送货获取所有4件商品

    Happy coding,

    编码愉快,

    Quincy Larson, teacher at Free Code Camp

    昆西·拉尔森(Quincy Larson),免费代码营的老师

    翻译自: https://www.freecodecamp.org/news/code-briefing-full-stack-development-is-alive-and-well-aac6540fe4c5/

    链栈的入栈和出栈代码

    展开全文
  • 声明栈类,及入栈 和出栈操作 //栈不需要头节点,直接在top指针操作,所以不需要在构造函数中给top申请地址 //插入操作,直接申请一个结点,将top = s;这样对top操作就是对栈顶的操作 class Stack{ public: ...

     如果有什么错误,烦请各位大佬指出了,这只是我的学习笔记.

    定义栈结点的结构类型

    class node{
    	public:
    		int data;
    		node *next;
    }; 

    声明栈类,及入栈 和出栈的操作

    //栈不需要头节点,直接在top指针操作,所以不需要在构造函数中给top申请地址 
    //插入操作,直接申请一个结点,将top = s;这样对top操作就是对栈顶的操作 
    class Stack{
    	public:
    		node *top;
    		
    		Stack(){ //z利用构造函数将栈指针设置为NULL,否则top指针就成了野指针,因为没有指向一块内存
    			top = NULL;
    		}
    
            void push(int x); //进栈操作
    
            int pop();     //出栈操作
    }

     1. 进栈操作

    //链栈不需要判断栈是否满了,但是可以判断是否申请内存成功,我这里没有判断 
    void Stack::push(int x){  
    			node *s = new node;
    			s->data = x;
    			s->next = top; //结点的next域指向头指针 
    			top = s;        //头指针再指向新结点 
    		}

    2. 出栈操作

    //出栈是始终从栈顶出栈,所以在入栈的时候使用头插法入栈.
    //出栈,创建一个临时结点,让临时结点指向头结点,把top->data赋值给x,
    //让top后移,并删除临时结点,因为临时结点保存的是上一个结点 
        int pop(){
    		if(top==NULL){  
    			cout<<"栈空了"<<endl;
    			return;
    		}else{
    			node *p = top;
    			int x = top->data;
    			top = top->next;
    			delete p;
    			return x;
    		}
    	}

     3.   取栈顶元素,不需要移动指针,只需要判断栈是否为空,不为空的时候将栈顶元素返回即可

    int gettop(){
    	if(top==NULL){
    		cout<<"栈空了"<<endl;
    		return;
    	} else{
    		return top->data;
    	}
    }

     4. 判断栈空操作

    //判断栈空函数,如果栈为空,则返回1,确实是空的,不为空则返回0; 
    	int isEmpty(){
    		if(top==NULL){
    			return return 1; 
    		}else{
    			return 0;
    		}
    	}

     5. 析构函数是用来清空栈的操作

     如果栈不为空,则创建一个临时结点指向头结点,让头节点往后移动一个结点,删除p结点,p保存了上一个结点   
         ~stack(){
    			
    		while(top != NULL){  
    			node *p = top;
    			top = top->next;
    			delete p;
    		}
    	} 

    展开全文
  • 链栈入栈出栈实现

    2020-09-07 16:14:10
    #include <stdio.h> #include<...//stack为当前的链栈,a表示入栈元素 lineStack *push(lineStack *stack,int a){ //创建存储新元素的节点 lineStack *line=(lineStack*)malloc(sizeo...
  • 采用链表来模拟栈的出入栈操作,将头结点指向的位置设置为栈顶,这样对于插入删除来说效率更高。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> ...
  • 链栈入栈出栈算法

    千次阅读 2019-11-25 23:53:43
    } void PushStack(char x) //入栈 { LinkStack *top; top = (LinkStack *)malloc(sizeof(LinkStack)); top->data = x; top->next = L; L = top; } char PopStack() //出栈 { char x; if(L->next == NULL) //...
  • //链栈基本操作入栈和出栈)C语言详解 //通过采用头插法操作数据的单链表实现了链栈结构,这里给出链栈及基本操作的C语言完整代码: //链表中的节点结构 typedef struct lineStack{ int data; struct linkStack ...
  • 链表栈的入栈和出栈操作

    千次阅读 2017-11-24 16:23:58
    链表栈的入栈和出栈操作 #include #include typedef int ElemType; typedef struct linknode {  ElemType data; //数据域  struct linknode *next; //指针域 }ListStack; //入栈 /*  已知变量:...
  • 实现顺序栈的初始化、入栈和出栈操作

    万次阅读 多人点赞 2018-05-04 09:49:59
    编写一个程序实现顺序栈的初始化、入栈和出栈操作; //方案1 # include&amp;amp;lt;stdlib.h&amp;amp;gt; #include&amp;amp;lt;iostream&amp;amp;gt; using namespace std; # define ...
  • 创建lstack.h #pragma once //链式栈:利用带头节点的单链表实现 //栈顶为第一个数据结点,因为:头插O(1),头删:O(1),有尾指针的的尾插:O(1),有尾指针的尾删O(n) ...//入栈 bool Push(P
  • #include &lt;iostream&gt;using namespace std;struct LinkStack{ int data; LinkStack *next;...S,int data) //入栈{ LinkStack *p=new LinkStack; p-&gt;data=data; p-&g...
  • 链栈入栈操作出栈操作(c语言)

    千次阅读 2020-04-07 22:12:33
    本人菜鸟,还请诸位大佬多多指点!... //链栈入栈出栈; #include<stdlib.h> typedef struct node //定义结点; { int data; struct node *next; }StackNode,*Linklist; Linklist top; //定义栈顶指针...
  • 最近在学习数据结构中的栈,于是...元素具有相同的类型,相邻元素具有前驱后继关系 Operation InitStack(*S):初始化操作,建立一个空栈S DestroyStack(*S):若栈存在,则销毁它 ClearStack(*S):将栈清空 StackEmp
  • 实现该链栈入栈和出栈操作,并实现10进制到2进制的转化。 */ #include #include #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 typedef int SElemType; ...
  • 代码内容:链栈的创建,入栈出栈! 数据元素为数字! 主要函数: void In(LinkStack L) //前插法建立含有n个数字的链栈 void Pop(LinkStack L, int e)//一个元素出栈 void Push(LinkStack L )//入栈一个元素 void ...
  • 索引程序代码实现栈stack入栈和出栈(非链栈) code c运行结果结论 程序代码 实现栈stack入栈和出栈(非链栈) code c #include <stdio.h> #include <stdlib.h> #include <time.h> typedef ...
  • 标准格式 typedef struct linklist { int data; struct linklist *next; }LinkStack; LinkStack* Init_LinkStack();...LinkStack* Push_LinkStack(LinkStack *,int);...LinkStack* Pop_LinkStack(LinkStack *,int*);...
  • 将链表头部作为栈顶的一端,可以避免在实现数据 "入栈" "出栈" 操作时做大量遍历链表的耗时操作。 链表的头部作为栈顶,意味着: 在实现数据"入栈"操作时,需要将数据从链表的头部插入; 在实现数据"出栈"操作...
  • // 使用双链表 定义栈的基本操作 public class StackByDoubleLink extends DoubleLinkList { // 栈继承自双链表 // DoubleNode head = null; // 双链表压栈操作 --- 向双链表插入一个元素 public void push(int a...
  • 顺序栈基本操作入栈和出栈)C语言详解 栈的具体实现(1)顺序栈(2)链栈 栈的应用(1)回退 (2)框号应用问题 (3)进制转换 顺序栈的基本操作: 顺序表中设定一个实时指向的栈顶元素结构的变量。 设置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,670
精华内容 2,268
关键字:

链栈的入栈和出栈操作