数据结构专题一:栈、队列、链表

这里栈和队列用STL库来说明一下:
stack是STL中实现的一个后进先出的容器。

清空:clear()

获取栈内元素的个数:size()

判断空:empty()

进栈:push()

出栈:pop()

取栈顶元素:top()

队列queue,在STL中则是实现了一个先进先出的容器。

清空 clear()

获取队列中的元素个数 size()

判空 empty()

入队 push() 将元素放到队尾

出队 pop() 这里是令队首元素出队

获取队首 front()

获取队尾 back()

栈和队列调用的时候主要可以直接用STL库提供的stack和queue容器,这里简单来说明一下链表:

    顺序表和链表都是线性表,顺序表类似于数组 ,而链表由若干节点组成,且节点在内存中的存储位置通常是不连续的。链表的节点一般由两个部分组成,即指针域和数据域,链表的两个节点之间一般通过一个指针来从一个节点指向另一个节点。

struct node{
    int data;
    node * next;
};

//1、创建链表
node* create()
{
    node * p,*pre,* head;
    head = new node; //创建头结点
    head->next = NULL: //初始创建时指针域赋值空
    pre = head ;
    return node;
}

//2、查找元素的个数
int search(node * head, int x)
{
    int count = 0;
    node* p = head->next;
    while(p!=NULL)
    {
        if(p->data == x) { count++; }
        p = p->next;
    }
    return count;

}

在第三个元素位置插入4,可以看到 4的前驱指向元素3所在节点,4的后继为6所在的节点

//3、将x插入到以head为头结点的链表的第pos个位置上
void insert(node * head,int pos, int x)
{
    node * p = head;
    for(int i = 0; i< pos -1 ; i++)
    {
        p = p->next;
    }
    node * q =new node ; //创建包含数据x的新节点
    q->data = x;
    q->next = p->next;  //新节点指向当前节点的下一个节点
    p->next = q; //当前节点指向新节点

}

删除元素6所在的节点,6的前项节点指向6的后项节点

void del(node * head ,int x)
{
    node * p =head ->next ;
    node * pre =head ;
    while( p != NULL){
        if(p->data ==x)
        {
            pre->next = p->next;
            delete(p);
            p = pre->next; //加上这一句是删除所有数据域为x的节点
        }else{
            pre = p;
            p = p->next ;
        }

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值