结构体怎么定义的?跟下面的一样吗?
struct int_linkedlist_node
{
int element;
struct int_linkedlist_node* next;
};
struct int_linkedlist
{
struct int_linkedlist_node* head;
int count;
};
按照这个结构体定义,代码修改如下:
#include <stdio.h>
#include <stdlib.h>
#include "int_linkedlist.h"
struct int_linkedlist* int_linkedlist_init()
{
struct int_linkedlist* list = NULL;
list = (struct int_linkedlist*)malloc(sizeof(struct int_linkedlist));
list->head = (struct int_linkedlist_node*)malloc(sizeof(struct int_linkedlist_node));
list->head->element = -1;
list->head->next = NULL;
list->count = 0;
return list;
}
void int_linkedlist_free(struct int_linkedlist* list)
{
struct int_linkedlist_node* node,*t;
if (list && list->head)
{
node = list->head;
while (node)
{
t = node->next;
free(node);
node = t;
}
list->head = 0;
free(list);
}
}
int int_linkedlist_count(struct int_linkedlist* list)
{
return list->count;
}
void int_linkedlist_add(struct int_linkedlist* list, int index, int value)
{
int i=1;
struct int_linkedlist_node* p = 0,*t;
if (index < 1 && index > list->count + 1)
return;
if (list == 0)
return;
p = (struct int_linkedlist_node*)malloc(sizeof(struct int_linkedlist_node));
p->element = value;
t = list->head;
while (t && i < index)
{
t = t->next;
i++;
}
if (t)
{
p->next = t->next;
t->next = p;
}
}
void int_linkedlist_remove(struct int_linkedlist* list, int index)
{
int i = 1;
int_linkedlist_node* p,*t;
if (list == 0)
return;
if (index <1 || index > list->count)
return;
p = list->head;
while (p && i < index)
{
p = p->next;
i++;
}
if (p)
{
t = p->next;
if (t)
{
p->next = t->next;
p->next = t->next;
free(t);
list->count -= 1;
}
}
}
void int_linkedlist_clear(struct int_linkedlist* list)
{
struct int_linkedlist_node* p,*t;
if (list == 0)
return;
p = list->head;
while (p)
{
t = p->next;
free(p);
p = t;
}
list->head->next = 0;
list->count = 0;
}
int int_linkedlist_get(struct int_linkedlist* list, int index)
{
int i = 1;
struct int_linkedlist_node* node;
if (list == 0 || list->head == 0) return -1; //如果index超出链表长度,或者小于1,返回-1
node = list->head->next;
while (node && i < index)
{
node = node->next;
i++;
}
if (node)
return node->element;
else
return -1;
}
//i从1开始
int int_linkedlist_lookup(struct int_linkedlist* list, int value)
{
int i = 1;
struct int_linkedlist_node* p;
if (list == 0 || list->head == 0)
return -1;
p = list->head->next;
while (p && p->element != value)
{
p = p->next;
i++;
}
if (p)
return i;
else
return -1;
}
int int_linkedlist_isempty(struct int_linkedlist* list)
{
if (list->count == 0) return 1;
else return 0;
}
你哪一行报错的?
把你的完整代码用代码段</>的文本形式发一下,我调试下看看,你发图片我们没办法调试和修改。