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