问个c语言链表的问题???

问题描述

问个c语言链表的问题???

不知道我这个链表哪里建立错了,每次编译都通不过。
我觉得原理应该搞懂了,求大神指点一下啊 啊啊啊啊

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
typedef struct link
{
    int a;
    struct link *next;
}ST;
ST *begain;
ST *p;
void creat()
{
    ST *h;
    srand((unsigned)time(NULL));
    h->a=rand()%100+1;
    h->next=begain->next;
    begain->next=h;
}
void Lprint()
{
    int k=0;
    p=begain->next;
    do
    {
        printf("%6d",p->a);
        k++;
        p=p->next;
    }while(p==NULL);
}
void main()
{
    begain->next=NULL;
    creat();
    Lprint();
}

解决方案

有两个问题:
1.需要为每个节点都malloc一个空间
2.do()while这里的判断条件应该是p!=NULL

 #include <stdio.h>
#include <time.h>
#include <stdlib.h>
typedef struct link
{
    int a;
    struct link *next;
}ST;
ST *begain;
ST *p;
void creat()
{
    ST *h = (ST *)malloc(sizeof(ST));
    srand((unsigned)time(NULL));
    h->a=rand()%100+1;
    h->next=begain->next;
    begain->next=h;
}
void Lprint()
{
    int k=0;
    p=begain->next;
    do
    {
        printf("%6d",p->a);
        k++;
        p=p->next;
    }while(p!=NULL);
}
void main()
{
    begain = (ST *)malloc(sizeof(ST));
    begain->next=NULL;
    creat();
    Lprint();
}

解决方案二:

你在create函数中,需要给指针分配存储空间
ST *begain 改为
ST *begain = (ST *)malloc(sizeof(ST));
其他的也一样,在使用指针的时候,要保证这个指针指向了一块内存空间。

解决方案三:

c语言-报数问题(链表)
C语言链表的实验有问题
C语言链表

解决方案四:

new一个节点!我不太懂

解决方案五:

这样定义感觉更好

 void ST* creatNode()
{
    ST *h = (ST *)malloc(sizeof(ST));
    srand((unsigned)time(NULL));
    h->a=rand()%100+1;
    h->next=null;
   return h;
}
时间: 2024-11-03 05:31:41

问个c语言链表的问题???的相关文章

c语言-关于C语言链表学习入门遇到瓶颈

问题描述 关于C语言链表学习入门遇到瓶颈 怎样学习C语言中的链表,有没有什么好的文章博客,详细易懂,发一下链接,谢谢 解决方案 关于链表的学习,我大一的时候也很困惑.特别是当你看着ADT所谓的(抽象数据类型)时.后来我看了一本有源代码的书,结合代码猜发现也不过如此,很简单的.第一,你必须意识到为什么有数组啦,我还要链表呢?这个问题你想想.然后给你个例子,过年回家啦!火车上的座位明显不够啦!这时候火车尾部就会加一节,不行加两节...总之加到,火车头拉不动为止(当然这是玩笑)而如果是数组的话,你就不

printf-求问:C语言 格式限定符类型的问题

问题描述 求问:C语言 格式限定符类型的问题 有时不小心错用了格式限定符,例如: int x; scanf("%f", &x); <----- 应该用%d printf("%g", x); <----- 应该用%d 而编译程序却编译通过了,没有发现错误,为什么? 解决方案 c语言中有强转这个东西,从这个角度也可以理解,c语言功能之所以强大,是因为限制很少,说白了,什么类型在内存中都是连续的01而已 解决方案二: 编译器不会检查这些的.这很正常.好

c语言-求问一个C语言字符指针的问题

问题描述 求问一个C语言字符指针的问题 #include void Initialize (char * a, char * b) { a[0] = 'T'; a[1] = 'h'; a[2] = 'i'; a[3] = 's'; a[4] = ' '; a[5] = 'i'; a[6] = 's'; a[7] = ' '; a[8] = 'A'; a[9] = ''; b = a; b[8] = 'B'; } #define ARRAY_SIZE 10 char a[ARRAY_SIZE];

c语言 链表 输入问题,编译没错误, 运行 错误

问题描述 c语言 链表 输入问题,编译没错误, 运行 错误 #include #define M 20 int f(char a[]) { int i ; i=0; while (a[i]='n') i++; i--; while (i>0&& a[i]==' '||a[i]=='t') i--; if(i>0) { i++; a[i]='n'; i++; a[i]=''; } return 1; } int getline (char s[],int lim ) { int

c语言-关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点

问题描述 关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点 下面代码主要实现链表的创建,插入,删除,并且能将两个年龄递增链表进行合并成递减链表 然而在插入和删除操作中gets函数无法起作用,strcmp函数也出现位置冲突报错..功力不足实在解决不了..跪求大神解答..(感觉自己写的东西除了上面两个错误应该还有,但是因为位置冲突问题就只能编译到那个地方无法进行下去..我肉眼实在找不出来.. #include<stdio.h> #include<stdlib.h> #incl

新人问一个c语言问题,拜托各位帮我解释一下

问题描述 新人问一个c语言问题,拜托各位帮我解释一下 要求找出一个x,使其除以5余1,除以6余5,除以7余4,除以11余10我写的代码int main(){ int x=0; do{ x++; }while(x%5!=1&&x%6!=5&&x%7!=4&&x%11!=10); printf(""%d""x); return 0; }问题出现在while括号里面条件,参考答案是while(!(x%5==1&&am

结构体链表-c语言链表,输入输出正确但是删除操作报错

问题描述 c语言链表,输入输出正确但是删除操作报错 #include#include#define len sizeof(struct student) struct student{int num;float score;struct student *next;}; struct student *creat(void) // 建立{struct student *p1*p2*head;int n=0;p1=p2=(struct student *)malloc(len);scanf("&q

C语言 链表

原文:C语言 链表 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将要实现19个功能.到目前我只写了一半,先传上来,大家有兴趣的可以帮忙指正,谢谢 在vs2010上面编译运行无错误. 每天都会把我写的新代码添加到这个里面.直到此链表完成. ? #include "stdafx.h" #include "stdio.h" #include <stdl

c语言链表删除节点问题

问题描述 c语言链表删除节点问题 #include #define NUll 0#include struct stu{ char name[6]; int xuehao; int grade; struct stu next;};typedef struct stu STU;main(){ STU *p*p_start*p2*p_print*p_charu*p_charu2; int ixuehao; //输入 for (i=0;i { p=(STU *)malloc(sizeof(STU))