c语言链表报错,【debug】c语言链表运行报错
[C++] 纯文本查看 复制代码#include
#include
typedef char elemtype;
typedef struct _Node
{
elemtype data;
_Node *next;
} Node, *List;
// (1)初始化顺序表L
Node *initList();
// (2)依次插入a、b、c、d、e
bool insertNode(List &L, elemtype data, int i);
// (3)输出顺序表L
void printList(List L);
// (4)输出顺序表L的长度
int length(List L);
// (5)判断顺序表L是否为空
bool isEmpty(List L);
// (6)输出顺序表的第3个元素
// (7)输出元素a的逻辑位置
bool getElem(List L, int i, elemtype &e);
// (10)删除L的第3个元素
bool getLogicElem(List L, elemtype e, int &i);
bool delElem(List L, int i);
// (12)释放顺序表L
bool destroyList(List L);
int main()
{
// (1)初始化顺序表L
// List L = initList();
List L = (Node *)malloc(sizeof(Node));
// (2)依次插入a、b、c、d、e
char datalist[5] = {'a', 'b', 'c', 'd', 'e'};
for (int i = 0; i < 5; i++)
{
char *t = &datalist[i];
printf("%c", *t);
insertNode(L, datalist[i], i + 1);
}
// (3)输出顺序表L
printList(L);
// (4)输出顺序表L的长度
printf("length of List L is %d", length(L));
// (5)判断顺序表L是否为空
// char *str = isEmpty(L) ? "empty" : "no empty";
if (isEmpty(L))
printf("List L is empty");
else
printf("List L is no empty");
// (6)输出顺序表的第3个元素
char e = getElem(L, 3, e);
printf("%c\n", e);
// (7)输出元素a的逻辑位置
int i = 0;
getLogicElem(L, 'a', i);
printf("a in the %d", i);
// (8)在第4个元素位置上插入元素f
insertNode(L, 'f', 4);
//(9)输出顺序表L
printList(L);
// (10)删除L的第3个元素
delElem(L, 3);
// (11)输出顺序表L
printList(L);
// (12)释放顺序表L
destroyList(L);
return 0;
}
Node *initList()
{
return (Node *)malloc(sizeof(Node));
}
bool insertNode(List &L, elemtype data, int i)
{ //创建节点
Node *t = (Node *)malloc(sizeof(Node));
t->data = data;
t->next = NULL;
// if (i < 1 || i > length(L))
if (i < 1)
return false;
else
{
//定位到目标节点前一个
Node *p = L->next;
// int j = 1;
// for (; j < i - 1; j++, p = p->next)
// ;
int j = 0;
for (; j < i - 1; j++, p = p->next)
;
//插入节点
t->next = p->next;
p->next = t;
return true;
}
}
void printList(List L)
{
if (L->next == NULL)
{
printf("List is empty\n");
}
else
{
Node *p = L->next;
while (p)
{
printf("%c ", p->data);
p = p->next;
}
}
}
int length(List L)
{
if (L->next == NULL)
{
return 0;
}
else
{
int i = 0;
Node *p = L->next;
// for (; p != NULL; i++)
// {
// p = p->next;
// }
while (p->next != NULL)
while (p != NULL)
{
i++;
p = p->next;
}
return i;
}
}
bool isEmpty(List L)
{
if (L->next)
return false;
else
return true;
}
bool getElem(List L, int i, elemtype &e)
{
if (i < 1 || i > length(L))
return false;
else
{
Node *p = L->next;
for (int j = 1; j <= i; j++, p = p->next)
;
e = p->data;
return true;
}
}
//根据元素值找元素位置
bool getLogicElem(List L, elemtype e, int &i)
{
if (L->next == NULL)
{
i = 0;
return false;
}
else
{
Node *p = L->next;
int j = 0;
for (; p->data != e; j++, p = p->next)
;
i = j;
return true;
}
}
bool delElem(List L, int i)
{
if (i < 0 || i > length(L))
return false;
else
{
Node *p = L->next;
//定位到目标元素的前一个位置
int j = 1;
for (; j < i - 1; j++, p = p->next)
;
Node *t = p->next;
p->next = t->next;
free(t);
return true;
}
}
bool destroyList(List L)
{
if (!(L->next))
return false;
else
{
Node *p = L->next;
Node *t = L->next;
while (p)
{
t = p;
p = p->next;
free(t);
}
return true;
}
}
c语言链表报错,【debug】c语言链表运行报错相关推荐
- python3.7运行报错_使用python3.7运行报错:No module named 'MySQLdb'
以下是报错信息: Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs ...
- ionic build android release,ionic build android -release运行报错
ionic build android -release运行报错,Could not reserve enough space for 2097152KB object heap,检查了应该有足够的空 ...
- SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策
SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策 报错如下: 详细信息: Log for automatic creation of ...
- python3运行报错:TypeError: Object of type ‘type‘ is not JSON serializable解决方法(详细)
python3运行报错:TypeError: Object of type 'type' is not JSON serializable解决方法(详细) 参考文章: (1)python3运行报错:T ...
- appium运行报错java.net.SocketException: socket write error
这个错我调了 快两天一点头绪没有,脚本正常跑没问题,但是就是控制台输出信息报错,没法定位问题在哪.报错如图: 虽然这个报错不影响测试结果,但是本人有强迫症,一定要查出究竟: 我的尝试: 1.那天试验, ...
- tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].
一.问题 tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost]. 多半情况是找不到 ...
- mpi tcp连接报错_MPI分布式编程 --3.OpenMPI多节点运行报错
1. OpenMPI多节点运行报错问题 问题描述:节点一即host3,通过mpirun调用节点二即host4的mpi程序,报错如下. $ mpirun -np 1 --host host4 ./mai ...
- 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。
在eclipse中复制代码后代码中会报画红线错,而且项目也会报错. 错误原因:复制过程中由于不同文件编码方式的不同,使文件对空格的编码方式不同,从而无法识别. 解决方案:点击报错文件点右键->p ...
- 【ROS问题】rqt_plot运行报错
本人Linux版本:Ubuntu 18.04 LTS ROS版本:Melodic 方案一: 你看那个报错,全是Matplotlib的报错,是这个东西版本不够高,重新安装就好啦. python -m p ...
最新文章
- C++ 中NULL 和 nullptr 的区别
- 做生意的六大秘诀和十要诀
- vsftpd安装及虚拟用户认证
- 信息革命的新世界正在到来,连睡觉都觉得浪费
- ef sqlserver切换到mysql_可以为MySql和SqlServer使用EF上下文吗?
- 要毕业了,我应该做点啥?
- dbms_排名前50位的DBMS面试问答
- html编辑器查找与替换,织梦kindeditor文本编辑器增加“查找替换”功能
- java如何调用脚本_Java如何调用脚本的特定功能?
- 武汉工程大学计算机网络真题,2017年武汉工程大学计算机科学与工程学院836计算机网络考研导师圈点必考题汇编...
- java的程序编码_Java 程序编码规范(初学者要牢记)
- Geek必备神器 - Google眼镜(Google glass)的十大特色
- 微端服务器物品备注,GOM引擎定制功能可视化仓库+物品备注脚本
- Python实现图形学DDA算法
- 富文本编辑器Editormd的配置使用
- 以下sum函数用来求a,b两数的和,在主函数中输入两个数并调用sum函数求其和。
- 最小割的必须割边和可行割边
- document.referrer和history.go(-1)退回上一页区别
- android usb 流程
- Echars 旭日图 鼠标浮动 显示value值
热门文章
- ArcSoft人脸识别SDK开发
- WeiXin Share{微信分享}
- Deep Learning - Object Dectection 时间简史
- C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)
- 计算机网络蓝牙技术论文,蓝牙技术毕业设计(论文).doc
- 初中计算机学科知识,初中信息技术学科知识与教学能力讲义-1.PDF
- 使用spring web flow遇到的问题-1
- spring学习笔记 -- day02 spring基础、IOC控制反转
- 【396】逻辑一点通
- 19day---C++面试题