黯落辰星 2022-05-03 19:10 采纳率: 85%
浏览 175
已结题

要求实现一个函数,删除单链表的第i个结点

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct ListNode {
int num;
struct ListNode *next;
}Node;

Node *createlist();
Node *deletelink(Node *head, int i);
void display(Node *head);

int main(void)
{
Node *head;
int i;
head = createlist();
scanf("%d",&i);
head = deletelink(head, i);
display(head);
return 0;
}

  • 写回答

2条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-05-03 19:28
    关注
    Node *deletelink(Node *head, int i)
    {
        int j=0;
        if (i < 1){
            printf("error\n");
            return head;
        }
        Node *p = head,*pre = NULL;
        while(p && j < i - 1){
            pre = p;
            p = p->next;
            j++;
        }
        if (p == head){
            head = p->next;
            free(p);
        }
        else if (p == NULL){
            printf("error\n");
        }
        else {
            pre->next = p->next;
            free(p);
        }
        return head;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月3日