链表c代码

#include <stdio.h>
#include <stdlib.h>

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

int datas[] = {1, 2, 4, 8, 16, 32, 64, 128};

void list_head_init(struct node *head)
{
	head->data = 0;
	head->next = NULL;
}

int  list_empty(struct node *head)
{
	return head->next == NULL;
}

void list_add_tail(struct node *new, struct node *head)
{
	struct node *p = head;

	while (p->next) {
		p = p->next;
	}
	p->next = new;
}

void list_del(struct node *head)
{
	struct node *p = head->next;

	if (list_empty(head)) return;

	head->next = p->next;
	free(p);
}

void list_destroy(struct node *head)
{
	while (head->next)
		list_del(head);
}

void list_create(struct node *head)
{
	struct node *new;
	int i;

	for (i = 0; i < sizeof(datas) / sizeof(datas[0]); i++) {
		new = (struct node *)malloc(sizeof(struct node));
		new->data = datas[i];
		new->next = NULL;

		list_add_tail(new, head);
	}
}

void list_dump(struct node *head)
{
	struct node *p = head->next;

	while (p) {
		printf("%8d", p->data);
		p = p->next;
	}
	printf("\n");
}

int main(void)
{
	struct node root, *head = &root;

	list_head_init(head);

	list_create(head);
	list_dump(head);

	list_destroy(head);

	return 0;
}	


注意:插入在链表的尾部,删除在链表的头部,这个链表相当于就是一个链式队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值