linux 数据结构 链表,linux C单向链表数据结构学习

//

// linkelist.h

// wangbin_learn_c

//

// Created by 彬 王 on 12-5-17.

// Copyright (c) 2012年 sina. All rights

reserved.

//

#ifndef wangbin_learn_c_linkelist_h

#define wangbin_learn_c_linkelist_h

typedef struct node *link;

struct node {

unsigned char item;

link next;

};

link

make_node(unsigned char item);

void free_node(link p);

link

search(unsigned char key);

void insert(link p);

void delete(link p);

void traverse(void (*visit)(link));

void destroy(void);

void push(link p)

link

pop(void);

#endif

//

// linklist.c

// wangbin_learn_c

//

// Created by 彬 王 on 12-5-17.

// Copyright (c) 2012年 sina. All rights

reserved.

//

#include

#include "string.h"

static link head =NULL;

link

make_node (unsigned

char item)

{

link

p = malloc(*p);

p->item = item;

p->next = NULL;

return p;

}

void free_node(link p)

{

free(p);

}

link

search(unsigned char key)

{

link

p;

for(p=head;p;p->next)

{

if(p->item ==

key)

return p;

}

return NULL;

}

void insert(link p)

{

p->next = head;

head

= p;

}

void delete(link p)

{

link

pre;

if(p == head)

{

head

= p->next;

return;

}

for(pre=head; pre; pre =

pre->next)

{

if(pre->next ==

p )

{

pre->next = p->next;

return;

}

}

}

void traverse(void (*visit)(link))

{

link

p;

for(p=head;p;p=p->next)

{

visit(p);

}

return;

}

void destroy(void)

{

link

q,p=head;

while(p)

{

q=p;

p=p->next;

free_node(q);

}

return;

}

void push(link p)

{

insert(p);

}

link

pop(void)

{

if(NULL = head){

return NULL;

}

else{

link

p=head;

head

= head->next;

return p;

}

return;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值