标题:数据结构单链表,删除后再显示出现问题,求大神解答
只看楼主
寒韩丶
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-10-1
 问题点数:0 回复次数:1 
数据结构单链表,删除后再显示出现问题,求大神解答
#include<stdio.h>
#include<stdlib.h>
#include <malloc.h>
typedef int datatype;
typedef struct node{
    datatype data;
    struct node *next;
}Lnode;
Lnode *initialize();
int creatlist(Lnode *L);
int insert(Lnode *L);
int deletel(Lnode *L);
int show(Lnode *L);
int find(Lnode *L);
int main()
{
    Lnode *L;
    int s;
    printf("请选择你的操作:\n");
    printf("1.初始化\t");
    printf("2.创建\t");
    printf("3.插入\t");
    printf("4.删除\t");
    printf("5.查找\t");
    printf("6.显示\t");
    printf("0.退出\t");
    scanf("%d",&s);
    while(s!=0)
    {
        if(s==1)
        {
            L=initialize();
        }
        else if(s==2)
        {
            creatlist(L);
        }
        else if(s==3)
        {
            insert(L);
        }
        else if(s==4)
        {
            deletel(L);
        }
        else if(s==5)
        {
            find(L);
        }
        else if(s==6)
        {
            show(L);
        }
        else
        printf("输入有误!");
            printf("请选择你的操作:\n");
    printf("1.初始化\t");
    printf("2.创建\t");
    printf("3.插入\t");
    printf("4.删除\t");
    printf("5.查找\t");
    printf("6.显示\t");
    printf("0.退出\t");
    scanf("%d",&s);
    }
   
}
Lnode *initialize()
{
    Lnode *head,*p,*q;
    head=(struct node *)malloc(sizeof(struct node *));
    head->next=NULL;
    q=head;
    printf("头结点建立成功!\n");
    return (head);
}
int creatlist(Lnode *head)
{
    int m;
    Lnode *p,*q;
    printf("请输入建立链表的长度:\n");
    scanf("%d",&m);
    printf("请依次输入表中的值:");
    for(int i=1;i<=m;i++)
    {
        p=(Lnode *)malloc(sizeof(Lnode *));
        scanf("%d",&p->data);
        p->next =head->next;
        head->next=p;
    }
}
int insert(Lnode *head)
{
    Lnode *p;
    p=(Lnode* )malloc(sizeof(Lnode *));
    printf("请输入要插入的数据:\n");
    scanf("%d",&p->data);
    p->next=head->next;
    head->next=p;
    printf("插入成功!\n");
   
}
int find(Lnode *head)
{
    Lnode *p=head->next;
    int figure;
    printf("请输入要查找的数值:\n");
    scanf("%d",&figure);
   
    while(p!=NULL&&figure!=p->data)
    {
        p=p->next;
    }
    if(p==NULL)
    {
        printf("你要查找的数据不存在!\n");
    }
    else
        printf("你要查找的数据存在,它是%d\n",figure);
}
int deletel(Lnode *head)
{
    Lnode *m;
    Lnode *p=head->next;
    int figure;
    printf("请输入要删除的数据:\n");
    scanf("%d",&figure);
    while(p->next !=NULL&&p->next->data!=figure)
    {
        p=p->next;
    }
    if(p==NULL)
    {
        printf("你要删除的数据不存在!\n");
    }
    else
    {
        m=p;
        m->next=p->next->next ;
        printf("删除成功!\n");
        free(p);
    }
    return 1;
}
int show(Lnode *head)
{
    Lnode *p=head->next;
    while(p->next!=NULL)
    {
        printf("%d\n",p->data);
        p =p->next ;
    }
    printf("%d\n",p->data);
}
搜索更多相关主题的帖子: 删除 int next printf head 
2017-10-04 16:06
寒韩丶
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-10-1
得分:0 
回复 楼主 寒韩丶
好的,我修复好了
2017-10-04 16:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481119-1-1.html




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

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