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 + -
显示快捷键?