链表的使用例子

#include<stdio.h>
#include <stdlib.h>
typedef struct ListNode {
	int val;
	struct ListNode *next;
}ListNode;

void insert(ListNode* head,int value)
{
//	printf("%d",head->val);
	while(head->next)
	{
		head=head->next;
	}
	ListNode* a=(ListNode *)malloc(sizeof(ListNode));;
	head->next=a;
	a->val=value;
	a->next=NULL;
}
void print(ListNode* head)
{
	int i=0;
	while(head)
	{	i++;
		printf("%d",head->val);
		head=head->next;
//		printf("正在便利;");	
	}
	printf("链表共%d个元素\n",i);
}
int main() {
	
	ListNode a;
	a.val=0;
	a.next=NULL;
	int i ;
	for(i=1;i<=8;i++)
	{
		insert(&a,i);
	}
		print(&a);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的使用 Linux 内核链表的示例: ```c #include <linux/list.h> #include <linux/module.h> #include <linux/kernel.h> struct student { int id; char name[20]; struct list_head list; }; static LIST_HEAD(students); int __init my_module_init(void) { struct student *s1, *s2, *s3, *s4, *tmp; s1 = kmalloc(sizeof(struct student), GFP_KERNEL); s1->id = 1001; strncpy(s1->name, "Alice", sizeof(s1->name)); INIT_LIST_HEAD(&s1->list); list_add_tail(&s1->list, &students); s2 = kmalloc(sizeof(struct student), GFP_KERNEL); s2->id = 1002; strncpy(s2->name, "Bob", sizeof(s2->name)); INIT_LIST_HEAD(&s2->list); list_add_tail(&s2->list, &students); s3 = kmalloc(sizeof(struct student), GFP_KERNEL); s3->id = 1003; strncpy(s3->name, "Charlie", sizeof(s3->name)); INIT_LIST_HEAD(&s3->list); list_add_tail(&s3->list, &students); s4 = kmalloc(sizeof(struct student), GFP_KERNEL); s4->id = 1004; strncpy(s4->name, "David", sizeof(s4->name)); INIT_LIST_HEAD(&s4->list); list_add_tail(&s4->list, &students); printk(KERN_INFO "List of students:\n"); list_for_each_entry(tmp, &students, list) { printk(KERN_INFO "ID: %d, Name: %s\n", tmp->id, tmp->name); } return 0; } void __exit my_module_exit(void) { struct student *tmp, *next; list_for_each_entry_safe(tmp, next, &students, list) { list_del(&tmp->list); kfree(tmp); } } module_init(my_module_init); module_exit(my_module_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("Linux Kernel Linked List Example"); ``` 该示例定义了一个名为 `student` 的结构体,其中包含学生的 ID 和姓名,并使用内核链表将多个学生添加到了一个链表中。在模块初始化期间,代码分配了一些内存来存储学生的信息,并将它们添加到链表中。最后,它遍历链表使用 `printk` 函数打印每个学生的 ID 和姓名。 在模块退出期间,所有分配的内存都将被释放,并且链表的所有元素都将被删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值