要求:
已知一个链表,里面有5个元素,依次为:2,29,41,67,6,要求删除链表内的大于等于20,小于等于40的数,并输出删除后的链表。
参考代码:
#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node *next;
};
struct node* init(struct node* linkList,int arr[],int length){
linkList = NULL;
struct node *p;
int i=0;
printf("删除前的链表:");
while(i<length){
p = (struct node*)malloc(sizeof(struct node));
p ->data = arr[i];
printf("%d,",p->data);
p ->next = linkList;
linkList = p;
i++;
}
printf("\n");
return linkList;
}
struct node* Delete(struct node* Linklist,int min,int max)
{
struct node* head;
head = (struct node*)malloc(sizeof(struct node));
head->next=Linklist;
struct node* tail;
tail = head;
while (head->next)
{
if (head->next->data >=min && head->next->data <= max){
head->next = head->next->next;
}
else{
head = head->next;
}
}
return tail->next;
}
int main()
{
struct node *a,*result;
int arr[]={
2,29,41,67,6};
result=init(a,arr,5);
result=Delete(result,20,40);
printf("删除后的链表:");
for(result; result != NULL; result = result ->next){
printf("%d,",result->data);
}
printf("\n");
system("pause");
return 0;
}