谁能帮我讲讲c语言中的链表问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 18:59:03
主要是如何创建一个链表,插入元素和删去元素,最好能举例说明。

这个问题本身不是很复杂,但是需要比较大的篇幅。我简单介绍一下,但愿对你有帮助。
typedef struct _HList {
void *data
struct _HList *next;
} HList, *PHList;

首先链表:
HList *my_list;
然后初始化链表:
my_list = (HList *)calloc(1, sizeof(HList));

初始化成功以后,就可以往链表加数据了,加数据的过程就是在构建一个链表
int list_add(HList *me, void *data) //将数据加到链表头部
{
if (me==NULL) return -1;
HList *new_node = NULL; //构建一个新节点
new_node = (HList *)calloc(1, sizeof(HList));
new_node->data = data;//给新节点赋值;
//下面是将节点加到链表的头部
new_node->next = me->next; //保存头部的先前第一个节点
me->next = new_node; //将第一个节点保存为新创建的节点

return 0;
}

//解决了创建和插入的问题,下面举例删除
/*有很多中,比如从头部删除,或者从尾部删除,或者根据指定的键值删除,下面的例子是根据指定的键值删除*/
int HList_del(HList *me, void *data)
{
if (me==NULL) return -1; //当然得先判断链表是否有效
HList *cur_node = me->next;
HList *pre_node = me; /*保存前一个节点,为了删除时知道前一个节点的位置*/
while (cur_node!=NULL) {
if (memcmp(cur_node->data, data,