C语言数据结构线性表单链表的基本操作,写好了代码,编译没有错但运行有错,求找错误在哪?谢谢
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
int InitList(LinkList &La){ La=(LinkList)malloc(sizeof(LNode));
if(!InitList(La)) return ERROR;
La->next=NULL;
return OK;
}
int ListInsert_L(LinkList &La,int i,ElemType e){
LNode *p; int j;
LinkList s;
p=La;j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}//ListInsert_L
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
LNode *pa,*pb,*pc;
pa=La->next; pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;pc=pa;pa=pb->next;
}
else{pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb;
free(Lb);
}
void main()
{
int n=10;
LNode *p;
LinkList La,Lb,Lc;
InitList(La);
for(int i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
printf(" input numbers: \n");
scanf("%d",&p->data);
p->next=La->next;
La->next=p;
}
InitList(Lb);
for(int j=n;j>0;--j)
{
p=(LinkList)malloc(sizeof(LNode));
printf(" input numbers: \n");
scanf("%d",&p->data);
p->next=Lb->next;
Lb->next=p;
}
InitList(Lc);
MergeList_L(La,Lb,Lc);
}
不对呀,怎么能那样改,能不能再改改呀,谢谢
追答你把scanf里面的p->next前面的&去掉试试
追问可以编译,但是还是不能运行,我觉得这个程序有逻辑上的错误,你能不能给我改一下呢?主函数里面也没有链表Lc的输出,你给我改一下吧!谢谢啦:D
追答今天可能不行,明天给你看一下吧
追问嗯嗯,好的,谢谢你└(^o^)┘
运行没有错误,出来的黑框上只有“按任意键执行”,编译着也没有错误,我感觉是逻辑上的错误,应该得改一下,非常感谢
数据结构c语言 用单链表储存一元多项式,并实现两个多项式的相加运算...
temp=(LinkList *)malloc(sizeof(LinkList)); \/\/新建一个结点 temp->data=b->data; \/\/将链表当前要复制的结点b复制到新结点中 last->next=temp; \/\/将新建的结点加到新链表的末端 last=temp; \/\/last指向尾结点,刚才新建的结点已成为新链表的尾结点 b=b->next; \/\/遍历链表...
数据结构上机实验(编程)(单链表的基本操作)
1.熟悉线性表的基本运算在顺序存储结构上的实现;2.以线性表的基本操作(建表、插入、删除等)的实现为重点;3.通过本次实验帮助学生加深对C\/c++ 语言的使用(特别是函数参数、数据类型的定义和数组的使用)。不需要太难的结构,最好带上解释..需要调用函数的那种...谢谢啦 展开 我来答 2个回答 #热议# OPPO...
c语言数据结构线性表插入和删除实现代码错误在哪
L->length = 0;return TRUE;}int insertlist(Sqlist *L,int pos,ElemType e) {int i;if(L->length == 0) { \/\/ 第一元素无条件插入L->elme[0] = e;L->length = 1;return TRUE;}if(L->length >= MAXSIZE) {printf("表满。length = %d。\\n",L->length);return ERROR;}if(...
线性表的基本操作c语言实现
ifndef _2_1_H define _2_1_H typedef void SeqList;typedef void SeqListNode;\/\/创建线性表 SeqList * SeqList_Create(int capacity);\/\/销毁线性表 void SeqList_DesTroy(SeqList * list);void SeqList_Clear(SeqList* list);int SeqList_Length(SeqList* list);int SeqList_Capacity(S...
线性表(单链表)的存储结构和基本操作(初始化,创建,取值,查找,插入,删...
插入元素时,首先定位插入位置,创建新结点,将新结点插入到指定位置的前后。删除元素操作需要找到目标位置的前一个结点,调整指针,释放目标结点的空间。以上描述了单链表的基本操作实现,包括初始化、创建、取值、查找、插入和删除。整体代码和运行截图未在本文展示,实际使用中应根据具体需求编写代码。
C语言实现链表,为什么我把链表写入文件,文件里面显示的是乱码。下面是...
你的程序并没有写错。数据已经写入的文件,你下次也可以从文件里读入并还原这个链表。这只是一个字符的显示问题,你将一个int数据写入数据,显然占据四个字节,而当你用记事本打开时它就会根据你当前采用的字符集解释这四个字节的含义,然后再显示出来。但由于你存入的是整型数据而不是某个字符集的字符...
单链表的使用 写一个main函数,把单链表的基本操作都用一遍,并把结果输...
\/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) *\/\/* 操作结果:用e返回L中第i个数据元素的值 *\/ Status GetElem(LinkList L,int i,ElemType *e){ int j;LinkList p; \/* 声明一结点p *\/ p = L->next; \/* 让p指向链表L的第一个结点 *\/ j = 1; \/* j为计数器...
【100分】数据结构——使用C语言(线性表)
int Getelem(sqlist &L)\/\/输入表的数据 { int n;cout<<"输入数列的个数:"<<endl;cin>>n;printf("按大小顺序输入n个数:");\/\/cout<<"按大小顺序输入n个数:";if(n<0||n>L.listsize ) return 0;for(int i=0;i<n;i++)\/\/循环输入元素 { cin>>L.elem [i];L.length ++...
数据结构作业~急求~~~用c语言或c++ 使用单链表实现系统进程列表,完成...
一、单链表的建立 有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储...
用C语言编写链式存储结构下实现线性表的创建,插入,删除,按值查找
j++;} return p;} \/*单链表的按值查找*\/ LinkList LocalElem(LinkList la,int e){ LNode* p=la->next;while(p!=NULL && p->data!=e)p=p->next;return p;} \/*单链表插入操作*\/ bool InsertList(LinkList la,int i,int e){ \/\/在la链表中的i位置插入数值e int j=1;...