C语言数据结构线性表单链表的基本操作,写好了代码,编译无错,运行有错,求找错误在哪?给改正一下。谢谢

作者&投稿:掌览 (若有异议请与网页底部的电邮联系)
C语言数据结构线性表单链表的基本操作,写好了代码,编译没有错但运行有错,求找错误在哪?谢谢 #in~

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

if(!InitList(La)) return ERROR; 这句有错,改成if(!La) return ERROR;

其他没看出来 太乱了 ListInsert_L函数写了也没用

修改如下:

//---------------------------------------------------------------------------

#include "stdio.h"
#include "stdlib.h"
typedef char DataType;
typedef struct node{
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
ListNode *p;
LinkList head;
LinkList GreatListRH(void)
{
DataType ch;
LinkList head;
ListNode *s,*r;
head=(ListNode *)malloc(sizeof(ListNode));
r=head;
printf("输入链表各结点的数据:\n");
while((ch=getchar())!='\n')
{
s=(ListNode *)malloc(sizeof(ListNode));
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
return head;
}
ListNode *LocateNode (LinkList head,DataType key)
{
ListNode *p=head->next;
while(p&&p->data!=key)
p=p->next;
return p;
}
void InsertList(LinkList head,DataType x,int i)
{
ListNode *p=head,*s;
int j;
for (j=0; j<i-1; j++) {
p=p->next;
}

if(p==NULL)
{printf("未找到第%d个结点",i-1);exit(0);}
s=(ListNode *)malloc(sizeof(ListNode));
s->data=x,
s->next=p->next;
p->next=s;
}
void DeleteList(LinkList head,int i)
{
ListNode *p=head,*r;
int j;
for (j=0; j<i-1; j++) {
p=p->next;
}

if(p==NULL||p->next==NULL)
{printf("未找到第%d个结点",i-1);exit(0);}
r=p->next;
p->next=r->next;
free(r);
}
void main()
{
ListNode *p,*s;
DataType key;
ListNode *q;
int i;
DataType x;

p=GreatListRH();
printf("输入链表各结点的数据:\n");
for(s=p->next;s!=NULL;s=s->next)
printf("%c",s->data);
printf("\n");

printf("输入要查找的数据:");
scanf("%c",&key);
q=LocateNode(p,key);
if(q!=NULL)
printf("找到值为%c的结点:\n",key);
else
printf("没有找到值为%c的结点:\n",key);
printf("\n");

printf("输入要插入的数据和位置:");
fflush(stdin);
scanf("%c%d",&x,&i);
InsertList(p,x,i);
printf("在第%d个位置插入%c后链表各结点的数据:\n",i,x);
for(s=p->next;s!=NULL;s=s->next)
printf("%c",s->data);
printf("\n");//链表的插入
printf("输入要删除结点的位置:");
scanf("%d",&i);
DeleteList(p,i);
printf("在第%d个位置删除结点后链表各结点的数据:\n",i);
for(s=p->next;s!=NULL;s=s->next)
printf("%c",s->data);
printf("\n");//链表的删除
}
//---------------------------------------------------------------------------


数据结构之线性表的逻辑结构[3]
也可以直接去实现 在上面各操作中定义的线性表L仅仅是一个抽象在逻辑结构层次的线性表 尚未涉及到它的存储结构 因此每个操作在逻辑结构层次上尚不能用具体的某种程序语言写出具体的算法 而算法的实现只有在存储结构确立之后 lishixinzhi\/Article\/program\/sjjg\/201311\/23934 ...

数据结构:用C语言创建一个具有10条学生记录的线性表并输出 数组中每个...
void DispList(LinkList *L) \/\/输出线性表 { LinkList *p=L->next;while(p!=NULL){ printf("%s",p->data->num);printf("%s",p->data->name);printf("%d",p->data->score);p=p->next;} } int ListInsert(LinkList *&L,int i,Data e) \/\/插入数据元素 { int j=0;Li...

数据结构,线性表,代码我删了一些,主函数里面结构体指针的初始化不会...
大概是这样吧:定义一个的指针,它指向SeqList类型的数据 (sizeof(SeqList):seqlist类型所占字节数目 (struct SeqList*):强制转换 于是:malloc:分配一段内存,大小同SeqList,返回首地址,把首地址强制转化为构造类型SeqList的指针的类型。

数据结构 线性表
写出算法被调用后的线性表L:36 ,12,8,50,25,5,15 InsertRear(L,25) 25插入表尾,InsertFront(L,50) 50插入表头,表为:50,25 a[4]={5,8,12,15,36} 当a%2==0时(a为偶数)时InsertFront插入表头,a为奇数时插入表尾 5插入表尾,表变为:50,25,5 8插入表头,表变为: 8,50,25,...

线性表是具有n个( )的有限序列
线性表是具有n个(数据元素)的有限序列。线性表(linearlist)是数据结构的一种,线性表是n个具有相同特性的数据元素的有限序列。线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。这句...

数据结构如何建立1个线性表?
建立顺序表代码如下:由数组元素a[0..n-1]创建顺序表L。将a中的每个元素依次放入顺序表中,并将n赋值给顺序表的长度域。算法为:void CreateList(SqList * &L, ElemType a[], int n){ int i=0, k=0;L = (SqList *)malloc(sizeof(SqList)); \/\/分配存储线性表的空间 while(i<n...

集合与线性表的区别在于是否按关键字排序。
1、首先,集合(Set)是一种数据结构,它用于存储互不相同的元素。集合中的元素没有特定的顺序,且每个元素只能出现一次。主要的操作包括添加元素、删除元素和检查元素是否存在。例如,在某些编程语言(如Python)中,可以使用大括号{}来定义一个集合。2、线性表(LinearList)则是一种有序的数据结构,...

数据结构线性表中I值不合法的表示方法
if(!p||j>i),表示p=NULL。即表为空,取不出数据,或者经过while循环结束了,都找不到i。J>i表示,所要取的数据i不合法,j>i,相当与:1>i.图二的缺点是,当P不为空,i的取值范围超过了表长度,while循环还是会执行。不够优化。想表示i的合法性(即i取值是否存在),随便怎么表示,C语言...

数据结构-线性表问题(严蔚敏C语言版清华大学出版社)
很简单,写算法时,要返回的传地址,不需要返回的,传值 也可以这么说,要在函数中改变的,传地址,不需要改变的,传值 比如GetElem( L, i, &e)说明e的值在函数中会改变,需要返回到主函数中,因此要传地址,而i,L只是在函数中引用一下,不要返回到主函数中 实参传入函数中时,会在内存中另...

非空的线性表有哪些作用?
实现编程语言特性:在某些编程语言中,非空线性表是实现某些语言特性的基础,如Python中的列表、Java中的ArrayList等。这些特性使得程序员能够更方便地处理集合数据。总之,非空线性表是一种功能强大且灵活的数据结构,它在数据存储、算法设计、程序开发等多个领域都有着广泛的应用。通过提供高效的数据操作和...

卢氏县18735108238: 用C语言编程实现单链表的基本操作 -
戏裴天可: 运行结果如下: 完整代码如下: #include<stdio.h> #include<stdlib.h> typedef struct LNode {char data;LNode *next; }* LNodePtr; LNodePtr CreateList() {//初始化头节点LNodePtr head = (LNodePtr)malloc(sizeof(LNode));head->data ...

卢氏县18735108238: C语言链表的使用方法 -
戏裴天可: 下面的程序是单链表的建立与输出,都有详细的注释,相信你能看的懂 但要想学习链表必须得掌握了一定的C语言基础 下面这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值#include<stdio.h>#include<...

卢氏县18735108238: 数据结构(C语言版)线性表的操作 -
戏裴天可: //--------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> typedef struct {int *elem;int length;int listsize; }sqlist; void initlist_sq(sqlist *L){ /*注意这里*/L->elem=(int *)malloc(5*sizeof(sqlist)); /*注意这里*/if(!L->...

卢氏县18735108238: C语言数据结构链表的基本操作 -
戏裴天可: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h>typedef struct stud *STUD; struct stud {int id;char name[20];int sex;int age;float grade;STUD next; }; STUD head; STUD Create() {STUD t;if ((t = malloc (sizeof *t)) ...

卢氏县18735108238: 单链表的基本操作操作,类C语言 -
戏裴天可: #include < iostream >#include < string > using namespace std; #define NULL 0 struct list { string name; long num; string sex; list * next; }; int n; void main() { list * creat(void); list * del(list * head,long num); list * insert(list * head,list * stud); void print(list...

卢氏县18735108238: 线性表的基本操作c语言实现 -
戏裴天可: #include"stdio.h" #include<malloc.h> typedef char ElemType; typedef struct LNode {ElemType data; struct LNode *next; }LinkList; void CreatListF(LinkList *&L,ElemType a[],int n) //头插法建表 { LinkList *s;int i; L=(LinkList *)malloc(sizeof(LinkList))...

卢氏县18735108238: 用c语言编程实现单链表的基本操作,有必要的类型说明,并完成下面函数的功能, -
戏裴天可: 楼主你好 代码具体如下: #include<stdio.h> #include<stdlib.h> typedef struct node { char ch; struct node *next; }LinkList; void CreatList(LinkList * &h) { LinkList *p; LinkList *r=h;//尾结点 开始指向头结点 int i=0; for(;i<26;i++) { p=(LinkList *)malloc(...

卢氏县18735108238: 数据结构实验课程(单链表的基本操作) -
戏裴天可: #include#includetypedef struct node{ int data; /*每个元素数据信息*/ struct node *next; /*存放后继元素的地址*/ } LNode,*LinkList; LinkList Creat_LinkList(void ) { /*创建空单链表,入口参数:无;返回值:单链表的头指针,0代表创建失败,...

卢氏县18735108238: 用C语言编写线性链表的删除,插入,逆置等基本操作 -
戏裴天可: 这是用C++写的,不知道行不行#include<iostream.h>#include<stdlib.h> typedef int elemtype; typedef struct node {elemtype data; struct node *next; }Lnode,*Lklist; void initLklist(Lklist &h) { h->next =NULL; }//头插法/*Lklist crea( ) { Lklist h,s,p; ...

卢氏县18735108238: 线性表 单向循环链表的操作(C语言) -
戏裴天可: 这是将数据写入链表 你的程序比较乱而且没有注释改起来比较费劲,你第二个函数的功能是计算一个节点数据中字符串的长度还是计算链表中元素的个数?表达不明确!SLNode *LinkedLis...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网