单链表的基本概念和操作

本文介绍了单链表的结构体定义,包括`listnode`和`linklist`的角色。接着详细讨论了单链表的创建,强调了在创建过程中二级指针的必要性,以确保链表在函数调用后仍然有效。此外,还涵盖了单链表的头插法操作和显示方法,头插法从空表开始,不断读入数据生成新节点并插入链表头部,直到遇到结束标志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 单链表的结构体定义
typedef int datatype;

typedef struct node{
	datatype data;
	struct node *next;
}listnode,*linklist;

listnode一般用于分配内存,*linklist一般用来定义头节点。

  • 单链表的基本操作

单链表的创建1

linklist list_create()
{
	linklist H;
	if((H=(linklist)malloc(sizeof(listnode)))==NULL)
	{
		printf("malloc failed!\n");
		return H;
	}
	H->data = 0;
	H->next = NULL;

	return H;
}

单链表的创建2

void InitList(LinkList* PHead)
{
    if ((*PHead = (LinkList)malloc(sizeof(Node))) == NULL)
    {
        printf("内存申请失败!\n");
        return;
    }
    (*PHead)->Next = NULL;
}
--------------------- 
作者:LiuBo_01 
来源:优快云 
原文:https://blog.csdn.net/LiuBo_01/article/details/80230612 
版权声明:本文为博主原创文章,转载请附上博文链接!

单链表的创建,形参必须是二级指针,使用的时候是一级指针取地址,不然的话在函数initlist中创建,主函数调用的时候给节点分配内存,如果不使用地址传递,调用结束局部变量就销毁了。

  • 单链表的头插
int list_head_insert(linklist H,datatype value)
{
	linklist p;

	if((p=(linklist)malloc(sizeof(listnode)))==NULL)
	{
		printf("malloc failed\n");
		return -1;
	}
	p->data = value;
	p->next = H->next;
	H->next = p;

	return 0;
}
  • 单链表的显示
void list_show(linklist H)
{
	while(H->next)
	{
		printf("%d ",H->next->data);
		H = H->next;
	}
	printf("\n");
}
  • 单链表的头插
    从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志(-1)为止。
void CreatFormHead(LinkList PHead)
{
    DataType data; 
    Node* s;             //要插入的结点指针
    scanf("%d", &data);
    while (data != -1)    //输入要插入的值以-1作为结束标志
    {
        s = (Node*)malloc(sizeof(Node));
        s->Data = data;
        s->Next = PHead->Next;
        PHead->Next = s;
        scanf("%d", &data);
    }
}
--------------------- 
作者:LiuBo_01 
来源:优快云 
原文:https://blog.csdn.net/LiuBo_01/article/details/80230612 
版权声明:本文为博主原创文章,转载请附上博文链接!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值