链表

链表的作用是储存不断增多的数据。相比数组,链表的访问比较慢,数据也可能因为操作不当而丢失;但是可以储存不断增多的数据,同时插入和删除操作比较简单

新建链表

Struct node{
    Set data
    Struct node pointer next
}
Struct node pointer head to NULL, p, q
while(you want){   Set n   Read n
Lend Space Struct node to p Set p -> data to n if(head == NULL){ head = p } Set p -> next to NULL Set q to p; Set p to p -> next if(you want)break }

删除节点

这个需要以上面的链表为基础。

Set n
Read n
Struct node pointer t to head
Set flag to 1
while(flag == 1){
    if(t -> next -> data != n){
    Set t to t -> next
    }
    else if(t -> next -> data == n){
    Set p to t -> next
    Set q to p -> next
    Set t -> next to q
    free p
    Set flag to 0
    }
    else{
    Write "Not Found"
    Set flag to 0
    }
}

 C语言实现

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

struct node {
    int data;
    struct node* next;
};

struct node* head = NULL , * p = NULL, * q, * t;
int main() {
    int n, flag = 1;
    while (flag) {
        scanf("%d", &n);
        p = (struct node*)malloc(sizeof(struct node));
        if (head == NULL)head = p;
        p->data = n;
        q = p;
        p->next = NULL;
        p = p->next;
        scanf("%d", &flag);
    }
    flag = 1;
    while (flag) {
        scanf("%d", &n);
        t = head;
        while (t->next->data != n && t->next != NULL)t = t->next;
        if (t->next == NULL)printf("Not found!");
        else {
            q = t->next;
            t->next = q->next;
            t = t->next;
            free(t);
        }
        scanf("%d", &flag);
    }
    return 0;
}

 

posted @ 2022-10-23 08:47  20221312付安旭  阅读(26)  评论(0编辑  收藏  举报