链表
struct List
{
int data;
struct List* next;
}
创建链表
单链表
实现
struct List* listCreate()
{
int data;
struct List* head = NULL;
struct List* pre = NULL;
struct List* current = NULL;
while(scanf("%d",&data) && data != -1)
{
current = (struct List*)malloc(sizeof(struct List));
if(head == NULL)
head = current;
else
pre->next = current;
current->next = NULL;
current->data = data;
pre = current;
}
return head;
}
错例
struct List* listCreate()
{
int data;;
struct List* current = NULL;
struct List* head = current;
while (scanf("%d", &data) && data != -1)
{
current = (struct List*)malloc(sizeof(struct List));
if (head == NULL)
head = current;
current->data = data;
current = current->next;
}
return head;
}
在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动之后可能出现申请的空间和释放空间大小的不匹配文章来源地址https://www.toymoban.com/news/detail-799604.html
循环链表
单独创建
struct List* circle_listCreate()
{
int data;
struct List* head = NULL;
struct List* pre = NULL;
struct List* current = NULL;
while(scanf("%d",&data) && data != -1)
{
current = (struct List*)malloc(sizeof(struct List));
if(head == NULL)
head = current;
else
pre->next = current;
current->next = head;
current->data = data;
pre = current;
}
return head;
}
删除节点
实现方式一:
struct list* listDelete(struct list* L,int data)
{
struct list* pre = L;
struct list* head = L;
struct list* kill;
while(head != NULL && head->data == m)
{
kill = head;
head = head->next;
free(kill);
}
if(head == NULL)
return head;
pre = head;
kill = head->next;
while(kill!=NULL)
{
if(kill->data == m)
{
pre->next = kill->next;
free(kill);
kill = pre->next;
}
else
{
pre = kill;
kill = kill->next;
}
}
return head;
}
实现方式二:
struct list* listDelete(struct list** L,int data)
{
struct list* head = (*L), * pre = (*L);
struct list* newL = *L;
struct list* kill = NULL;
while (*L !- NULL)
{
if((*L)->data == data)
{
if((*L) == newL)
newL ==newL->next;
else
pre->next = (*L)->next;
kill = (*L);
(*L) = (*L)->next;
free(kill);
}
else
{
pre = (*L);
(*L) = (*L)->next;
}
}
*L = newL;
return head;
}
文章来源:https://www.toymoban.com/news/detail-799604.html
到了这里,关于单链表与循环链表创建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!