anonymous311 2023-09-12 11:45 采纳率: 50%
浏览 3
已结题

关于#c语言数据结构链表#的问题,请各位专家解答!

#include<stdio.h>
#include <stdlib.h>
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode, * LinkList;
int initlist(LinkList L)
{
    L=(LinkList)malloc(sizeof(LNode));
     L->next=NULL;
}
int creatlist(LinkList L,int n)
{
    int j;
    LinkList p;
    for(j=n;j>0;j--)
    {
       p=(LinkList)malloc(sizeof(LNode));
       scanf("%d",&p->data);
       L->next=p;
       p->next=NULL;
       L=L->next;
    }
    return 1;
}
void printlist(LinkList L)
{
    LinkList t=L->next;
    while(t!=NULL)
    {
        printf("%d ",t->data);
        t=t->next;
    }
    printf("NULL\n");
}
int getelem(LinkList L,int i,int *e)
{
    int j;
    LinkList s=L;
    for(j=0;j<i;j++)
    {
        s=s->next;
    }
    if(s==NULL) return 0;
    *e=s->data;
    printf("%d ",*e);
    return 1;
}
int insertelem(LinkList L,int i,int e)
{
    LinkList p=L->next;
    LinkList q;
    int j;
    while(p!=NULL&&j<i-1)
    {
        p=p->next;
        j++;
    }
   q=(LinkList)malloc(sizeof(LNode));
   q->data=e;
   q->next=p->next;
   p->next=q;
   printf("%d ",q->data);
}
int deletelem(LinkList L,int i,int *e)
{
    int j;
    LinkList p=L->next;
    LinkList q;
    while(p!=NULL&&j<i-1)
    {
        p=p->next;
        j++;
    }
    q=p->next;
    *e=q->data;
    p->next=q->next;
    return 1;
}
int main()
{
    LinkList L;
    int n,e,t;
    initlist(L);
    scanf("%d",&n);
    creatlist(L,n);
    getelem(L,1,&e);
    printlist(L);
    insertelem(L,2,10);
    printlist(L);
    deletelem(L,3,&t);
    printlist(L);
    return 0;
}


问题:程序只能输入但其他功能运行不了

  • 写回答

4条回答 默认 最新

  • 关注

    代码修改了一下,为便于查看,在代码中加了一些打印提示,如果不需要可修改一下printf代码。
    修改后运行结果:

    img

    代码:

    #include<stdio.h>
    #include <stdlib.h>
    typedef struct LNode {
        int data;
        struct LNode* next;
    }LNode, * LinkList;
    int initlist(LinkList *L)
    {
        (*L) = (LinkList)malloc(sizeof(LNode));
        (*L)->next = NULL;
        return 1;
    }
    int creatlist(LinkList L, int n)
    {
        int j;
        LinkList p;
        for (j = n; j > 0; j--)
        {
            p = (LinkList)malloc(sizeof(LNode));
            scanf("%d", &p->data);
            L->next = p;
            p->next = NULL;
            L = L->next;
        }
        return 1;
    }
    void printlist(LinkList L)
    {
        LinkList t = L->next;
        while (t != NULL)
        {
            printf("%d ", t->data);
            t = t->next;
        }
        printf("\n"); //printf("NULL\n");
    }
    int getelem(LinkList L, int i, int* e)
    {
        int j;
        LinkList s = L;
        for (j = 0; j < i; j++)
        {
            s = s->next;
        }
        if (s == NULL) return 0;
        *e = s->data;
        printf("获取第%d个数据:%d\n",i, *e);
        return 1;
    }
    int insertelem(LinkList L, int i, int e)
    {
        LinkList p = L->next;
        LinkList q;
        int j = 1; 
        while (p != NULL && j < i - 1)
        {
            p = p->next;
            j++;
        }
        q = (LinkList)malloc(sizeof(LNode));
        q->data = e;
        q->next = p->next;
        p->next = q;
        printf("第%d位置插入数据:%d\n", i,q->data);
        return 1;
    }
    int deletelem(LinkList L, int i, int* e)
    {
        int j = 1;//修改
        LinkList p = L->next;
        LinkList q;
        while (p != NULL && j < i - 1)
        {
            p = p->next;
            j++;
        }
        if (p)
        {
            q = p->next;
            *e = q->data;
            p->next = q->next;
            printf("删除第%d个元素:%d\n", i, *e);
            return 1;
        }
        
        return 0;
    }
    int main()
    {
        LinkList L;
        int n, e, t;
        initlist(&L);
        scanf("%d", &n);
        creatlist(L, n);
        getelem(L, 1, &e);
        printlist(L);
        insertelem(L, 2, 10);
        printlist(L);
        deletelem(L, 3, &t);
        printlist(L);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 9月12日

悬赏问题

  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,