| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3069 人关注过本帖
标题:初学,如何删除单链表
取消只看楼主 加入收藏
T1165170241
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-12-9
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:3 
初学,如何删除单链表
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#define N 3
#define LEN sizeof(struct grade)
struct grade
{
    char no[7];
    int score;
    struct grade *next;
};
struct grade *create(void)
{
    struct grade *head=NULL,*new1,*tail;
    int i=1;
    for(;i<=N;i++)
    {
        new1=(struct grade *)malloc(LEN);
        printf("Input the number of student NO.%d(6 bytes):",i);
        scanf("%s",new1->no);
    if(strcmp(new1->no,"000000")==0)
        {  
            free(new1);
            break;
        }
        printf("Input the score of student NO.%d:",i);
        scanf("%d",&new1->score);
        if(i==1) head=new1;
        else tail->next=new1;
        tail=new1;
    }
    return(head);
}
    struct grade *del(struct grade *head)
    {
        struct grade *p1;
        struct grade *p2;
        p1=head;
        while(p1)
        {
            p2=p1->next;
            free(p1);
            p1=p2;
        }
    };

void main()
    {
    struct grade *p;
    p=del();
    if(p==NULL)
        printf("链表删除成功");
}
不太会,,求大神
2016-04-10 17:52
T1165170241
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-12-9
收藏
得分:0 
回复 2楼 qq1023569223
运行后我怎么知道是否已经删除了整个链表
2016-04-10 18:18
T1165170241
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-12-9
收藏
得分:0 
回复 3楼 书生牛犊
由于删除过程不管是先释放还是先取的后一个元素都有问题,所以我用了两个指针来删除整个链表,一个指向当前要删除的元素,而另外一个指向该删除元素的下一个元素.
我是这么觉得的
2016-04-10 18:20
T1165170241
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-12-9
收藏
得分:0 
回复 7楼 qq1023569223
能不能检验它的头指针存在与否?怎么突然运行出错了
2016-04-10 18:52
快速回复:初学,如何删除单链表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026301 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved