#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node *next;
};
struct Node *head;
void Print()
{
struct Node *temp=head;
while(temp!=NULL)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("\n");
}
void Delete(int n)
{
struct Node *temp1=head;
if(n==1)
{
head=temp1->next;
free(temp1);
return;
}
for(int i=0;i<n-2;i++)
temp1=temp1->next; //temp1 points to (n-1)th Node
struct Node *temp2=temp1->next; //nth node
temp1->next=temp2->next; //(n+1)th Node
free(temp2); //Delete temp2
}
void Insert(int n)
{
struct Node *temp1=(struct Node*)malloc(sizeof(struct Node));
temp1->data=n;
temp1->next=NULL;
struct Node *temp2=head;
if(temp2==NULL)
{
head=temp1;
return;
}
while(temp2->next!=NULL) // not while(temp2!=NULL)
{
temp2=temp2->next;
}
temp2->next=temp1;
}
int main()
{
head=NULL; //empty list
int n;
char c,ch;
Insert(1);
Insert(2);
Insert(3);
Insert(4); // 1 2 3 4
Print();
Delete(2); // 1 3 4
Print();
return 0;
}
以值刪除node
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *head;
void print()
{
struct node *temp=head;
while(temp!=NULL)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("\n");
}
void insert(int data,int n)
{
struct node *temp1=(struct node*)malloc(sizeof(struct node));
temp1->data=data;
temp1->next=NULL;
if(n==1)
{
temp1->next=head;
head=temp1;
return ;
}
struct node *temp2=head;
if(temp2==NULL&&n>1)
{
printf("error!\n");
return ;
}
for(int i=0;i<n-2;i++)
{
temp2=temp2->next;
if(temp2==NULL)
{
printf("error!\n");
return ;
}
}
temp1->next=temp2->next;
temp2->next=temp1;
}
void delete(int n)
{
int i=0;
struct node *temp1=head;
struct node *temp2=head;
while(temp1!=NULL)
{
if(temp1->data==n) //points to n
{
if(i==0)
{
head=temp1->next;
free(temp1);
return ;
}
temp2->next=temp1->next;
free(temp1);
return ;
}
temp2=temp1;//temp2 is temp1-1
temp1=temp1->next;
i++;
}
printf("no this number!\n");
}
int main()
{
head=NULL;
int n,p;
while(1)
{
printf("enter number to insert in list: ");
scanf("%d",&n);
if(n<0)
break;
printf("enter insert position: ");
scanf("%d",&p);
insert(n,p);
print();
}
printf("delete one number: ");
scanf("%d",&p);
delete(p);
print();
return 0;
}
沒有留言:
張貼留言