数据结构链表问题,c语言高手请进

//线性表的单链表存储结构
typedef struct LNode{
ElemType data;
struct LNode * next;
}LNode, *LinkList;
int main(void)
{
LinkList L,p;//La,Lb,Lc;
ElemType i=0;

L = (LinkList)malloc(sizeof(LNode));
printf("向链表中输入内容(0退出): ");
p = L->next;
scanf("%d",&p->data);
while(p->data != 0){
p->next = (LinkList) malloc (sizeof(LNode));
scanf("%d",&p->next->data);
p = p->next;
}
p->next = NULL;

输入数组时,我想以0结束,为什么我已输入0敲回车,就出现错误呢?

第1个回答  2010-04-01
因为你指针P还没开辟空间就读取输入数据了,所以才会出错。你可以弄一个中间变量A,用来读取输入数据,再判断A是否为0,若为0就对P开辟空间,再进行赋值......这样应该就不会出错了
第2个回答  2010-04-01
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode * next;
}LNode, *LinkList;

int main(void)
{
LinkList L,p;//La,Lb,Lc;
ElemType temp;

L = (LinkList)malloc(sizeof(LNode)); //表头节点
L->next=NULL;
L->data=0; // 记录链表中的元素
p = L ;
printf("向链表中输入内容(0退出): ");
while(scanf("%d",&temp)!=EOF && temp!=0)
{
L->data++; //统计链表元素个数
p->next = (LinkList) malloc (sizeof(LNode));
p = p->next;
p->data=temp;
}
p->next = NULL;

printf("链表中共有 %d 个元素,分别为:",L->data);
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}本回答被网友采纳

【数据结构·C语言】请高手帮忙检查一个关于【链表归并】的算法是否正...
1. 您的算法不符合题意,题意是不要创建新的结点就是用原来的空间,所以您 C=(ElemType*)malloc(sizeof(LNode));应该是多余的。2. 您的算法因为AB是递增有序要改为递减有序,您就每次将指针移动到序列的最末端来进行比较和插入,由于是单向链表,这样你的算法会非常低效。3. 您仅仅需要将两个...

c语言链表空间分配的问题,邀请诸位高手共析~
一个链表分配的问题,请诸君共析,如何对一个节点进行分配空间,简而言之可能说是malloc和free方面的问题。程序中链表创建函数、打印、逆序都没有问题,在删除时出现问题,原因是之前对节点的分配是s=(pNode)malloc(sizeof(pNode))。由于只是在删节点时出现... 展开 qian8329522 | 浏览1079 次 |举报 我有更好的答...

C语言~~~高手--->进!进!进!!!
1 寻找在两个有序整数链表中均出现的第一个相同整数,并将其输出。void SearchSs(SLink La,SLink Lb){ SLink cur1=La;SLink cur2=Lb;while( (cur1->data != cur2->data)&&(cur1->next != NULL) ){ cur1 = cur1->next;while((cur1->data != cur2->data)&&(cur2->next != ...

关于数据结构的问题,用C语言描述
4.线性表的链式存储方式及以下几种常用链表的特点和运算:单链表、循环链表,双向链表,双向循环链表。其中,单链表的归并算法、循环链表的归并算法、双向链表及双向循环链表的插入和删除算法等都是较为常见的考查方式。此外,近年来在不少学校中还多次出现要求用递归算法实现单链表输出(可能是顺序也可能是倒序)的问题。在...

数据结构c语言初始化单链表的头结点 为什么这么写不对 求高手解答!
你的显然是有问题的。引用传递与非引用传递是不同的。你百度下引用传值,就会明白。按你的写法,在函数调用时,会在init函数中生成一个临时的变量L,而不是main里面的L,你分配的空间也是给临时的变量L分配,而不是main里面的L。 引用的话,则只有一个L,所以可以。一个很经典的小例子,void swap(...

一个数据结构的问题:用链表表示树中任何一个结点的每一条路
因为栈中的元素顺序是从叶子到根,所以插的时候是倒着插的,主要链表的指针)当前路径的数目nPaths++;将pList插入到ppPath中,目的是通过ppPath可以找到各条路径对应的链表,即ppPath的各个结点存放的应该是代表树中各条路径的链表的头指针 } ppStack--〉头元素出栈 } (请注意上面的两个二级指针)

求高手帮做数据结构题
一 B、B(稳定,相当于第二关键字为出现的顺序)二 1后进先出 2度 、高度或者深度 三 YNNNNNNNNNY 四 1.线性表:线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。单链表:线性表的一种,用一组地址任意的存储单元存放线性表中的数据...

关于c语言的问题,高手都进来看看,分高很哦!!!
关于c语言的问题,高手都进来看看,分高很哦!!! 编译一个文档形式的c程序:比如一个学生的数据库:其中包括(1)查找某个学生的数据;(2)删除某个学生的数据;(3)插入某个学生的数据;(4)对学生数据库进行排序(比如按照:数学... 编译一个文档形式的c程序:比如一个学生的数据库:其中包括(1)查找某个学生的数据;(...

C语言编程高手请来解决几道tc程序题
域中的数据从小到大顺序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!***第二题(30...

C语言编程遇到问题,请求高手指点,是统计区间个数的问题
for(i=1;i<c;i++){ for(j=0;j<最大的个数;j++){ if(a[i]>minin&&a[i]<(minin+division)){ 存储链表 } } minin+=division;在链表中存储一个标记符 } 存储 因为不知道 大小 应该用链表

相似回答
大家正在搜