想要简单的实现以下链表,然后这次尝试在函数内完成head的建立,结果因为同级指针的问题,不能修改主函数的head,请把这段完善
#include
#include
typedef struct NODE{
int date;
struct Node *next;
}Node;
Node* create(int a){
Node *node = (Node*)malloc(sizeof (Node));
node->date = a;
node->next = NULL;
return node;
}
void insert(Node* head){
int a;
scanf("%d",&a);
Node* new = create(a);
if(head==NULL){
Node **head = &head;
*head = new;
} else{
Node* p = head;
while (p->next){
p=p->next;
}
p->next = new;
}
}
void print(Node*head)
{
Node* pMove=head;
while(pMove)
{
printf("%d ",pMove->date);
pMove=pMove->next;
}
}
void delete(Node*head,int count){
Node* pMove=head;
for(int i=0;i next;
}
if(pMove+2!=NULL){
pMove->next = (pMove+2);
} else{
pMove->next=NULL;
}
}
int main() {
Node *head = NULL;
for(int i = 0 ; i<=1;i++){
insert(head);
}
print(head);
}
请求修改位置:
insert函数下:
if(head==NULL){
Node **head = &head;
*head = new;
}
为了方便验证,主函数就只用了输入两次.
修改处见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct NODE{
int date;
struct NODE *next; //struct Node 修改
}Node;
Node* create(int a){
Node *node = (Node*)malloc(sizeof (Node));
node->date = a;
node->next = NULL;
return node;
}
void insert(Node** head){ //void insert(Node* head) 修改
int a;
scanf("%d",&a);
Node* New = create(a); //new 修改
if((*head) == NULL){ //f(head==NULL) 修改
//Node **head = &head; 修改
(*head) = New; //new; 修改
} else{
Node* p = (*head); //Node* p = head; 修改
while (p->next){
p=p->next;
}
p->next = New; //new 修改
}
}
void print(Node* head)
{
Node* pMove=head;
while(pMove)
{
printf("%d ",pMove->date);
pMove=pMove->next;
}
}
void Delete(Node* head,int count){ //delete 修改
Node* pMove=head;
for(int i=0;i<count-1;i++){
pMove = pMove->next;
}
if(pMove+2!=NULL){ //pMove+2是什么?
pMove->next = (pMove+2);//链表不是连续空间,pMove+2是想干啥?
} else{
pMove->next=NULL;
}
}
int main() {
Node *head = NULL;
for(int i = 0 ; i <= 1;i++){
insert(&head); //insert(head);
}
print(head);
system("pause");
return 0;
}