C语言链表实现增删改查

#include <stdio.h> #include <stdlib.h> #define NULL 0 structstu { long id; float score; structstu *next; }; void judge(long num) { } structstu *creat(structstu *s) { s=(stu *)malloc(sizeof(stu)); s->next=NULL; return s; } void show(structstu *head) { stu *p1; p1=head->next; printf("Show all stus:\n"); if (!p1) { printf("NULL!!"); } while(p1) { printf("%ld\t%.2f\n",p1->id,p1->score); p1=p1->next; } printf("---------------\n"); } void insert(structstu *head) { stu *p1; int n; printf("Enter the students number:\n"); scanf("%d",&n); for (int i=0;i<n;i++) {

p1=(structstu *)malloc(sizeof(structstu)); printf("id:"); scanf("%ld",&p1->id); printf("score:"); scanf("%f",&p1->score); p1->next=head->next; head->next=p1; } } int modify(structstu *head) { longnum; float score; stu *p1; p1=head->next; printf("Enter the modify id:"); scanf("%ld",&num); while(p1) { if (num==p1->id) { printf("Insert score:\n"); printf("score:"); scanf("%f",&score); p1->score=score; return 0; } p1=p1->next; } printf("Input Error!\n"); return 0; } int del(structstu *head) { longnum;int n=1; stu *p1,*p2; p2=p1=head->next; printf("Enter the del id:"); scanf("%ld",&num); while(p1) { if (num==p1->id) { if (n==1)

{ head->next=p1->next; free(p1); } else { for (int i=1;i<n-1;i++) { p2=p2->next; } p2->next=p1->next; } return 0; } p1=p1->next; n++; } printf("Input Error!\n"); return 0; } int main() { structstu *head=0,*s=0; //创建空 head=creat(s); //插入 insert(head); show(head); //修改 modify(head); show(head); //删除 del(head); show(head); return 0; }


相关文档

C语言指针链表(增、删、改、查)
删除重复的链表 c语言实现
C语言链表的建立、插入、删除、查询与显示
链表的c语言实现(八)
链表的c语言实现(七)
链表的c语言实现(三)
链表的c语言实现(九)
链表的C语言实现之单链表的实现
链表的c语言实现(二)
C语言中关于链表的建立、插入、删除、显示和查询的演示
电脑版