[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语言链表运行报错相关推荐

  1. python3.7运行报错_使用python3.7运行报错:No module named 'MySQLdb'

    以下是报错信息: Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs ...

  2. ionic build android release,ionic build android -release运行报错

    ionic build android -release运行报错,Could not reserve enough space for 2097152KB object heap,检查了应该有足够的空 ...

  3. SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策

    SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策 报错如下: 详细信息: Log for automatic creation of ...

  4. python3运行报错:TypeError: Object of type ‘type‘ is not JSON serializable解决方法(详细)

    python3运行报错:TypeError: Object of type 'type' is not JSON serializable解决方法(详细) 参考文章: (1)python3运行报错:T ...

  5. appium运行报错java.net.SocketException: socket write error

    这个错我调了 快两天一点头绪没有,脚本正常跑没问题,但是就是控制台输出信息报错,没法定位问题在哪.报错如图: 虽然这个报错不影响测试结果,但是本人有强迫症,一定要查出究竟: 我的尝试: 1.那天试验, ...

  6. tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].

    一.问题 tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost]. 多半情况是找不到 ...

  7. mpi tcp连接报错_MPI分布式编程 --3.OpenMPI多节点运行报错

    1. OpenMPI多节点运行报错问题 问题描述:节点一即host3,通过mpirun调用节点二即host4的mpi程序,报错如下. $ mpirun -np 1 --host host4 ./mai ...

  8. 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。

    在eclipse中复制代码后代码中会报画红线错,而且项目也会报错. 错误原因:复制过程中由于不同文件编码方式的不同,使文件对空格的编码方式不同,从而无法识别. 解决方案:点击报错文件点右键->p ...

  9. 【ROS问题】rqt_plot运行报错

    本人Linux版本:Ubuntu 18.04 LTS ROS版本:Melodic 方案一: 你看那个报错,全是Matplotlib的报错,是这个东西版本不够高,重新安装就好啦. python -m p ...

最新文章

  1. C++ 中NULL 和 nullptr 的区别
  2. 做生意的六大秘诀和十要诀
  3. vsftpd安装及虚拟用户认证
  4. 信息革命的新世界正在到来,连睡觉都觉得浪费
  5. ef sqlserver切换到mysql_可以为MySql和SqlServer使用EF上下文吗?
  6. 要毕业了,我应该做点啥?
  7. dbms_排名前50位的DBMS面试问答
  8. html编辑器查找与替换,织梦kindeditor文本编辑器增加“查找替换”功能
  9. java如何调用脚本_Java如何调用脚本的特定功能?
  10. 武汉工程大学计算机网络真题,2017年武汉工程大学计算机科学与工程学院836计算机网络考研导师圈点必考题汇编...
  11. java的程序编码_Java 程序编码规范(初学者要牢记)
  12. Geek必备神器 - Google眼镜(Google glass)的十大特色
  13. 微端服务器物品备注,GOM引擎定制功能可视化仓库+物品备注脚本
  14. Python实现图形学DDA算法
  15. 富文本编辑器Editormd的配置使用
  16. 以下sum函数用来求a,b两数的和,在主函数中输入两个数并调用sum函数求其和。
  17. 最小割的必须割边和可行割边
  18. document.referrer和history.go(-1)退回上一页区别
  19. android usb 流程
  20. Echars 旭日图 鼠标浮动 显示value值

热门文章

  1. ArcSoft人脸识别SDK开发
  2. WeiXin Share{微信分享}
  3. Deep Learning - Object Dectection 时间简史
  4. C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)
  5. 计算机网络蓝牙技术论文,蓝牙技术毕业设计(论文).doc
  6. 初中计算机学科知识,初中信息技术学科知识与教学能力讲义-1.PDF
  7. 使用spring web flow遇到的问题-1
  8. spring学习笔记 -- day02 spring基础、IOC控制反转
  9. 【396】逻辑一点通
  10. 19day---C++面试题