如何解决需要关于我的代码在链表中创建函数和删除函数的帮助吗? C 编程新手
typedef struct LinkedListNode
{
void *data;
struct LinkedListNode *next;
}LinkedListNode;
typedef struct
{
LinkedListNode *head;
}LinkedList;
LinkedList *createLinkedList()
{
LinkedList *ll = (LinkedList *) malloc(sizeof(LinkedList))
ll->head = NULL;
return ll;
}
void insertFirst (LinkedList *list,void *data)
{
Cannot create this function ?
}
void removeFirst(LinkedList *list)
{
Cannot create this function?
}
解决方法
我会帮助您完成 insertFirst
功能。
void insertFirst(LinkedList *list,void *data)
{
LinkedListNode *node = NULL;
node = malloc(sizeof *node); /* allocate a new node */
if (node == NULL)
{
/* handle oom */
}
node->data = data; /* save the data */
node->next = list->head; /* point the next node to head */
list->head = node; /* set head to the node we just created */
return;
}
,
insertFirst
和 removeFirst
这两个函数都应该具有返回类型 int
,以向函数的用户报告他们的操作是否成功。
例如
int insertFirst ( LinkedList *list,void *data )
{
LinkedListNode *node = malloc( sizeof( LinkedListNode ) );
int success = node != NULL;
if ( success )
{
node->data = data;
node->next = list->head;
list->head = node;
}
return success;
}
int removeFirst( LinkedList *list )
{
int success = list->head != NULL;
if ( success )
{
LinkedListNode *node = list->head;
list->head = list->head->next;
free( node->data );
free( node );
}
return success;
}
我假设函数 data
中使用的指针 insertFirst
指向一个动态分配的对象。否则在函数 removeFirst
中您需要删除语句
free( node->data );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。