问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言建立一个空线性表,输出结果本应该为“a=19 b=0 c=0”,可是实际运行结果为“a=19 b=17753914 c=-2

发布网友 发布时间:2022-07-08 17:54

我来回答

4个回答

热心网友 时间:2023-10-10 15:41

你使用c语言写的,因而不存在引用的问题。因而在函数InitList_Sq函数中,你的形参有问题,应该改为指针。
函数声明应该int InitList_Sq(SqList *L)
在调用函数的时候,应该改为InitList_Sq(&firstL);
这么改了之后,InitList_Sq函数的实现部分,不再是L.element而是L->element,依次类推。

热心网友 时间:2023-10-10 15:41

int InitList_Sq(SqList L)这个函数的参数据是传值,不是传址,建议把函数参数的传递复习一下

热心网友 时间:2023-10-10 15:42

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

#include <stdio.h>
#include <stdlib.h>

typedef struct tagStruNode
{
int val;
tagStruNode * pNext;
}STRU_NODE, *PSTRU_NODE;

//打印链表
void PrintLink(const PSTRU_NODE pLink)
{
PSTRU_NODE p = pLink;
while(NULL != p )
{
printf("%d,", p->val);
p = p->pNext;
}

printf("\n");
}

//将节点加入到一个增序排列的链表中
void AddNodeToLinkByInc(PSTRU_NODE * pLink, int val)
{
PSTRU_NODE p1 = *pLink;
PSTRU_NODE p2 = *pLink;

while(NULL != p1)
{
if(p1->val > val)
{
PSTRU_NODE pNew = (PSTRU_NODE)malloc(sizeof(STRU_NODE));
pNew->val = val;
if(p1 == p2) //加入到头节点
{
*pLink = pNew;
pNew->pNext = p1;
}
else
{
p2->pNext = pNew;
pNew->pNext = p1;
}

break;
}

p2 = p1;
p1 = p1->pNext;
}

if(NULL == p1)
{
PSTRU_NODE pNew = (PSTRU_NODE)malloc(sizeof(STRU_NODE));
pNew->val = val;
pNew->pNext = NULL;

if (NULL == * pLink) //头节点为NULL
{
*pLink = pNew;
}
else //加入到尾部
{
p2->pNext= pNew;
}

return;
}
}

//清除链表
void ClearLink(PSTRU_NODE pLink)
{
PSTRU_NODE p = pLink;
PSTRU_NODE p1 = NULL;
while(NULL != p)
{
p1 = p->pNext;
free(p);
p = p1;
}
}

//组合两个有序链表(增序)
PSTRU_NODE Combine(PSTRU_NODE pLink1, PSTRU_NODE pLink2)
{
PSTRU_NODE pL1 = pLink1;
PSTRU_NODE pL2 = pLink2;

PSTRU_NODE pOutLink = NULL;
while(NULL != pL1)
{
AddNodeToLinkByInc(&pOutLink, pL1->val);
pL1 = pL1->pNext;
}

while(NULL != pL2)
{
AddNodeToLinkByInc(&pOutLink, pL2->val);
pL2 = pL2->pNext;
}

return pOutLink;
}

int main()
{
PSTRU_NODE pLink1 = NULL;
PSTRU_NODE pLink2 = NULL;
PSTRU_NODE pCombineLink = NULL;

for(int i = 0; i < 5; i++)
{
AddNodeToLinkByInc(&pLink1, i);
AddNodeToLinkByInc(&pLink2, i + 5);
}

PrintLink(pLink1);
PrintLink(pLink2);

pCombineLink = Combine(pLink1, pLink2);
PrintLink(pCombineLink);

ClearLink(pLink1);
ClearLink(pLink2);
ClearLink(pCombineLink);

return 0;
}

热心网友 时间:2023-10-10 15:42

你初始化函数 的形参 有问题:应该SqList &L追问我试了 编译就出错了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2198香辣虾是什么意思 虾什么梗 肖战 刻纸制作需要哪些步骤 好玩的生存游戏手游(好玩的生存游戏手游推荐) 北京电脑职业培训学校都有哪些北京电脑培训班都有哪些 欧盟商标注册需要提供什么资料? 怎么注册欧盟商标?需要准备哪些材料? 5g手机有什么好处 5g手机大概多少钱 口水臭是什么原因呢? 口水臭是什么原因 口水臭怎么改善 excel combine函数 穿越火线里的所有枪 CF女皇利刃2017万圣节怎么样 巴雷特万圣节和毁灭,极光哪个好 货币的交易需求量和货币持有量有什么区别 天珠变是黄书? 给个黄色的玄幻小说类似天珠变的 但我看完了天珠变不要了 dismiss 读音问题 win7系统能查开机记录么 word参考文献编号后,出现如图的情况,如何对齐 闲鱼怎么录视频 为什么氧气分子和氮气分子的相对分子质量不同,但空气的密度相对稳定? 为什么自然界中氧元素的含量比氮元素高的多,但大气中 为什么随着高度增大,氮气与氧气分子数密度比值增大? 正常空气中的比例是氧气21%,氮气78%,那么高原处氮气含量变大变小? 要准确答案,谢谢大家 相同数目的氮气分子和氧气分子的质量比怎么计算,要过程!必CN哦! 空气中氮原子和氧原子质量比 适配器,火牛,转换器 的 英文都是 Adaptor 吗? 李沁名字十字绣针法 什么是附带民事诉讼,什么是另行提起民事诉讼 C语言:1、完成函数combine()。 2、在主函数main()中调用combine()。 MATLAB中combine函数的问题,如图所示。 C++primer 下面的combine函数为什么设置成引用类型? 新车磨合期多少公里换机油,是在拉高速前还是拉高速之后呢? 形容“张扬霸气”的词语有哪些? 我的vivox7手机来信息没有声音,只是振动了一下,通知栏也没有是怎么回 山东开放大学需要在校学习吗? 想知道韩信有几个儿子? 韩信一共多少儿子? 韩信的儿子叫什么 韩信他儿子叫什么 韩信的孩子是谁 韩信有几个儿子呢? 韩信有后代吗 需要两首描写夏天的古诗 异性生成器是什么样子的 摔跤了头晕恶心感觉有点不舒服 关于军事的名言名句 古今中外有那些经典的军事名言 b族链球菌核酸做完下面出血是什么情况