要件:
2、29、41、67、6の順序で5つの要素を含むリンクリストを知っている。リンクリストの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;
}