链表的综合运用
来源:互联网 发布:java swap docker 编辑:程序博客网 时间:2024/05/18 03:18
#include <stdio.h>#include <malloc.h>#define LEN sizeof(struct student)struct student {long num; float score; struct student *next; };int n; int main() {struct student *creat(); void print(struct student *); struct student *del(struct student *,long); struct student *insert(struct student *, struct student *); struct student *head,*stu; long del_num; printf("input records:\n"); head=creat(); print (head); printf("input the deleted number:"); scanf("%ld",&del_num); while (del_num!=0) {head=del(head,del_num); print (head); printf ("input the deleted number:"); scanf("%ld",&del_num);} printf("\ninput the inserted record:"); stu=(struct student *) malloc(LEN); scanf("%ld,%f",&stu->num,&stu->score); while(stu->num!=0) {head=insert(head,stu); print(head); printf("input the inserted record:"); stu=(struct student *)malloc(LEN); scanf("%ld,%f",&stu->num,&stu->score); } return 0;} struct student *creat() {struct student *head; struct student *p1,*p2; n=0; p1=p2=( struct student*) malloc(LEN); scanf("%ld,%f",&p1->num,&p1->score); head=NULL; while(p1->num!=0) {n=n+1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(struct student*)malloc(LEN); scanf("%ld,%f",&p1->num,&p1->score); } p2->next=NULL; return(head);}struct student *del(struct student *head,long num) {struct student *p1,*p2; if (head==NULL) {printf("\nlist null!\n");return(head);} p1=head; while(num!=p1->num && p1->next!=NULL) {p2=p1;p1=p1->next;} if(num==p1->num) {if(p1==head)head=p1->next; else p2->next=p1->next; printf("delete:%ld\n",num); n=n-1; } else printf("%ld not been found!\n",num); return(head); }struct student *insert(struct student *head, struct student *stud) {struct student *p0,*p1,*p2; p1=head; p0=stud;if(head==NULL) {head=p0; p0->next=NULL;}else{while((p0->num>p1->num) && (p1->next!=NULL)) {p2=p1; p1=p1->next; } if(p0->num<=p1->num) {if(head==p1) head=p0;else p2->next=p0;p0->next=p1;} else {p1->next=p0; p0->next=NULL;}}n=n+1;return(head); }void print(struct student *head) {struct student *p; printf("\nNow,These %d records are:\n",n); p=head; if(head!=NULL) do {printf("%ld %5.1f\n",p->num,p->score); p=p->next; }while(p!=NULL); }
趋于完美,啊哈。。。。。。。。。。。。。。。。。。
- 链表的综合运用
- ArrayAdapter 的综合运用
- 数组的综合运用
- transition,state的综合运用
- java对象的综合运用
- 基本语句的综合运用
- JPanel面板的综合运用
- 对Java多态性综合运用的探讨
- 数论其他算法的综合运用
- 8.6寻址方式的综合运用
- 多态与抽象的综合运用
- 最大流最小割的综合运用
- Cocos2d-X中Menu的综合运用
- 数组指针的综合运用代码总结
- 指针数组函数的综合运用
- 集合和流的综合运用
- mysql视图的综合运用(实例)
- 顺序表、结构体、深拷贝、重载运算符,快速排序的综合运用
- Android 的网络编程
- 让CPU占用率听你指挥
- 三种压力测试工具 http_load 和 apache ab 、 siege 压力测试(转)
- 集合Set增加和删除
- the value of esp was not properly saved
- 链表的综合运用
- 在VC下获取原始MAC地址
- 3-1修旱冰场
- LAB动态加载javascript
- oracle的一些学习笔记
- poj 2195 最小费用最大流
- oracle备份恢复之recover database的五条语句区别
- hdu 1003 Max Sum
- junit4