循环 link 列表插入开头
circular link list insertion at beginning
我在开头进行插入,但我的代码将其插入到最后。我正在考虑这个问题,但我认为我的逻辑是正确的。
我认为首先我创建一个指针 p 并将其初始化为 head 然后递增它直到它不等于 head 然后创建一个新的 link。这是正确的做法吗?
在这里,
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}sll;
void traversal(sll* head){
sll* p;
p=head;
do
{
printf("%d\n",p->data);
p=p->next;
}while (p!=head);
}
sll* insertionstart(sll* head,int data){
sll* ptr=(sll*)malloc(sizeof(sll));
ptr->data=data;
sll* p=head;
do
{
p= p->next;
} while (p->next!=head);
p->next=ptr;
ptr->next=head;
return head;
}
int main(){
sll* ptr;
sll* head;
sll* second;
sll* third;
sll* fourth;
sll* fifth;
head = (sll*) malloc(sizeof(sll));
second = (sll*) malloc(sizeof(sll));
third = (sll*) malloc(sizeof(sll));
fourth = (sll*) malloc(sizeof(sll));
fifth = (sll*) malloc(sizeof(sll));
head -> data=56;
head ->next=second;
second -> data=3;
second->next=third;
third -> data=18;
third ->next=fourth;
fourth -> data=90;
fourth ->next=fifth;
fifth -> data=76;
fifth ->next=head;
traversal(head);
printf("*******************\n");
head=insertionstart(head,42);
traversal(head);
return 0;
}
如果你想让新元素成为新的头部,那么只需在 insertionstart
中进行此更改:
return head; --> return ptr;
我在开头进行插入,但我的代码将其插入到最后。我正在考虑这个问题,但我认为我的逻辑是正确的。 我认为首先我创建一个指针 p 并将其初始化为 head 然后递增它直到它不等于 head 然后创建一个新的 link。这是正确的做法吗?
在这里,
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}sll;
void traversal(sll* head){
sll* p;
p=head;
do
{
printf("%d\n",p->data);
p=p->next;
}while (p!=head);
}
sll* insertionstart(sll* head,int data){
sll* ptr=(sll*)malloc(sizeof(sll));
ptr->data=data;
sll* p=head;
do
{
p= p->next;
} while (p->next!=head);
p->next=ptr;
ptr->next=head;
return head;
}
int main(){
sll* ptr;
sll* head;
sll* second;
sll* third;
sll* fourth;
sll* fifth;
head = (sll*) malloc(sizeof(sll));
second = (sll*) malloc(sizeof(sll));
third = (sll*) malloc(sizeof(sll));
fourth = (sll*) malloc(sizeof(sll));
fifth = (sll*) malloc(sizeof(sll));
head -> data=56;
head ->next=second;
second -> data=3;
second->next=third;
third -> data=18;
third ->next=fourth;
fourth -> data=90;
fourth ->next=fifth;
fifth -> data=76;
fifth ->next=head;
traversal(head);
printf("*******************\n");
head=insertionstart(head,42);
traversal(head);
return 0;
}
如果你想让新元素成为新的头部,那么只需在 insertionstart
中进行此更改:
return head; --> return ptr;