link.c
来自「自己做的常用库和实现的数据结构。public domain.」· C语言 代码 · 共 144 行
C
144 行
/* Demo of simple link operation. * * Written by Cyril Hu (cyrilhu@gmail.com), public domain. */#include<stdio.h>#include<stdlib.h>typedef struct stu { int sn; int score; struct stu *next;} STU;STU *creatlink(int n){ STU *head, *p, *t; int i; for(i=0; i<n; i++) { p = malloc(sizeof(STU)); puts("Input SN:\tSCORE:"); scanf("%d%d", &p->sn,&p->score); if(i==0) { head = t = p; } else { t->next = p; t = p; } } p->next = NULL; return head;}STU *deletelink(STU *head, int n){ STU *p, *t; if(head==NULL) { puts("Empty list !"); return head; } for(p=head; p->sn != n && p->next != NULL; p = p->next) { t = p; } if(p->sn == n) { if(p==head) { head = p->next; } else { t->next = p->next; } free(p); puts("Node deleted ."); } else { puts("Node not found !"); } return head;}STU *insertlink(STU *head, STU *ins){ STU *p, *t; if(head == NULL) { head = ins; ins->next = NULL; } else { for(p = head; p->sn < ins->sn && p->next != NULL; p = p->next) { t = p; } if(p->sn >= ins->sn) { if(p==head) { head = ins; } else { t->next = ins; } ins->next = p; } else { p->next = ins; ins->next = NULL; } } return head;}void printlink(STU *p){ puts("SN:\tSCORE:"); while(p != NULL) { printf("%d\t%d\n", p->sn, p->score); p = p->next; }}void destroylink(STU *p){ STU *t; while(p != NULL) { t = p->next; free(p); p = t; }}STU *reverselink(STU *head){ STU *t, *p, *q; for(p=head, q = p->next; q != NULL; p = q, q = t) { t = q->next; q->next = p; } head->next = NULL; return p;}int main(void){ STU *head, *ins; int i,n; puts("How many nodes to creat ?"); scanf("%d", &i); head = creatlink(i); printlink(head); head = reverselink(head); puts("link reversed"); printlink(head); puts("Which node to delete ?"); scanf("%d", &n); head = deletelink(head, n); printlink(head); ins = malloc(sizeof(STU)); puts("Input new SN & SCORE "); scanf("%d%d", &ins->sn, &ins->score); head = insertlink(head, ins); printlink(head); destroylink(head); head = NULL; return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?