请选择 进入手机版 | 继续访问电脑版
快捷导航
2 125

链表队列总结

@TK 于 2018-9-17 10:28 发表在 [技术探讨] [复制链接]

注册后可查看大图哦

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
首先申明下,本人十分讨厌画图。。。。十分讨厌,但还是画了图。。。呵呵
对于链表的考虑,额没啥好想法,就是简单的指针移动没啥难度
void * node_inster(node_t **linklist,unsigned long int data)
{

        node_t * newbit = (node_t *)malloc(sizeof(node_t));
        newbit->data = data;
        newbit->next = ((node_t *)(*(unsigned long int *)linklist));
        ((* (unsigned long int *)linklist)) = (unsigned long int )newbit;}pass:模仿老王手笔,解决我比较喜欢的递归调用函数新建节点问题

void * node_remove(void *list)
{
    node_t *p;
    node_t *q;
//    p = malloc(sizeof(node_t));
    p = ((node_t *)(*(unsigned long int *)list));
    if(p->next !=NULL)
    {

        while (p->next->next)
        {
            p = p->next;
        }
        q = p->next;
        p->next = p->next->next;
        free(q);
    }
    else
    {
        ((*(unsigned long int *)list)) = (unsigned long int)(((node_t *)(*(unsigned long int *)list))->next);
        free(p);
    }
}pass:简单的遍历删除没啥优点,本来想考虑效率问消除while可惜很麻烦还很费力,不如直接上while
队列的话是一种十分方便的本质和链表相同的升级型链表。。。。。。。最主要区分的问题就是,链表和队列不是同一层面得问题,队列只有++,- -,没有头和尾的概念但的运用队列的时候又要和链表的头尾结合。此处纠结本人甚久,以此为戒要学会画图,勿忘,勿忘
思路大概是:判空,判满(空间很大不需要),指针操作(只考虑+和-)代码:typedef struct node
{
    unsigned long int data;
    struct node * next;
}node_t;

typedef struct queue
{
    node_t * head;
    node_t * tial;
    unsigned long int val;
}queue_t;

queue_t * queue_init(queue_t *Q)
{
   if(Q->head==NULL)
       return  1;
    Q->head = NULL;
    Q->tial = NULL;
    Q->val=0;
    return 0;
}

queue_t *queue_push(queue_t *Q, unsigned long int val)
{
    node_t *p =NULL;
    if(Q==NULL)return -1;

    p = malloc(sizeof(node_t));
    if(!p)return 2;
    p->data = val;
    if(Q->tial == NULL)
    {
        Q->head = p;
        Q->tial= p;
    }
    else
    {
        Q->tial->next = p;
        Q->tial = p;
    }
}

queue_t * queue_pop(queue_t * Q)
{
    if(Q == NULL)return 2;
    node_t *q;
    q = Q->head;
    Q->head = Q->head->next;
    free(q);
}tip:比较简陋不喜请喷。。。本人知识有限,如有错误请指出。。。
Connecting & Messaging from Any.

共 2 个关于本帖的回复 最后回复于 2018-9-17 20:16

@TK 注册会员 发表于 2018-9-17 20:16:34 | 显示全部楼层
次队列还需继续更新,比如队列吃进个数,通过需求来实现队列
Connecting & Messaging from Any.
举报 使用道具
@TK 注册会员 发表于 2018-9-17 10:36:05 | 显示全部楼层
pss:队列没调试。。。哈哈哈哈。。。沙发
Connecting & Messaging from Any.
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐板块

精彩推荐

热门排行

明星用户

手机版|小黑屋|AnyMSG ( ©AnyMSG 2009 - 2017 · ICP备16009991号 )

GMT+8, 2019-4-25 11:48