|
5鱼币
- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>
- #define LEN sizeof (struct student )//student结构的大小
- struct student *creat();//自定义函数--创建链表
- struct student *del(struct student *head,int num);//自函数--del函数用于删除结点,*head即链表
- //的头指针,num是要删除的结点num
- void print(struct student *head);//自定义函数--打印链表
- struct student
- {
- int num;
- float score;
- struct student *next;
- };
- int n; //全局变量,用来记录存放了多少数据
- int main()
- {
- struct student *stu,*p;
- int n;
- stu=creat(); //得到创建后的链表的头指针
- p=stu;
- print(p);
- printf("Please enter the num to delete\n");
- scanf("%d",&n);
- print(del(p,n)); //调用函数del 进行删除
- printf("\n\n");
- system("pause");
- }
- // 创造链表
- struct student *creat()
- {
- struct student *head; //头指针
- struct student *p1,*p2;
-
- p1=p2=(struct student *)malloc(LEN);
-
- printf("Please enter the num\n");
- scanf("%d",&p1->num);
- printf("Please enter the score\n");
- scanf("%f",&p1->score);
-
- head=NULL;
- n=0;
- while(p1->num)
- {
- n++;
- if(1==n)
- {
- head=p1;
- }
- else
- {
- p2->next=p1;
- }
- p2=p1;
- p1=(struct student *)malloc(LEN);
-
- printf("Please enter the num:\n");
- scanf("%d",&p1->num);
- printf("Please enter the score:\n");
- scanf("%f",&p1->score);
- }
- p2->next = NULL;
- return head;
- }
- void print(struct student *head)
- {
- struct student *p;
- printf("\nThere are %d records!\n",n);
- p=head;
- if(head)
- {
- do
- {
- printf("学号是为%d的成绩是 %f \n",p->num,p->score);
- p=p->next;
- }while(p);
- }
- }
- struct student *del(struct student *head,int num)
- {
- struct student *p1,*p2;
- if(NULL==head) // 如果头结点指向NULL,这是一个空指针,直接结束
- {
- printf("\nThis list is null!\n");
- goto end;
- }
-
- p1=head;
- while(p1->num!=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("\nDelete No:%d succeed!\n",num);
- n=n-1; //全局变量,记录链表的数据个数
- }
- else
- {
- printf("%d not been found!\n",num);
- }
- end:
- return head;
- }
复制代码
其中用到了malloc分配内存
可是并没有用 free 释放。。难道不释放无所谓吗?
|
|