リンクリスト内の数値の範囲を削除します

要件:
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;
}

おすすめ

転載: blog.csdn.net/weixin_46220576/article/details/123094957