考研数据结构目录
一、顺序表(链表操作)
二、堆栈与队列
后续将持续更新~
前言:对堆栈的一些基本操作,用链表实现,top指向的是链表的第一个结点,对于压栈,我们不需要判满,但是对于出栈,我们需要判空。
目录
一、压栈操作
//注意:所有的压栈都是从链表的头部插入新节点
void push(NODE* top, int x){
NODE * s;//要压入的头结点
s=(NODE*)malloc(sizeof(NODE));
s->data=x;
s->next=top->next;//连接
top->next=s;
}
二、出栈操作
NODE * pop(NODE* top){
NODE * s;//要取出的头结点
if(top==NULL){
printf("栈空,取栈失败!");
return NULL;
}
s=top;// s为第一个结点
top=s->next;//之后的top孤立第一个节点
return s;
}
三、完整代码
#include<stdio.h>
typedef struct node{
int data;
struct node *next;
}NODE;
//注意:所有的压栈都是从链表的头部插入新节点
// 所有的出栈都是从栈表的头部取出第一个节点
void push(NODE* top, int x){
NODE * s;//要压入的头结点
s=(NODE*)malloc(sizeof(NODE));
s->data=x;
s->next=top->next;//连接
top->next=s;
}
NODE * pop(NODE* top){
NODE * s;//要取出的头结点
if(top==NULL){
printf("栈空,取栈失败!");
return NULL;
}
s=top;// s为第一个结点
top=s->next;//之后的top孤立第一个节点
return s;
}
int main(){
}