北京理工大学c语言链表处理,北京理工大学C语言

本文目录一览:

C语言链表一道题,跪求大神

//删除所有无效数值结点的函数原型:

void deleteneg(PNODE head)

{

PNODE p,q;         

p = head; 

q = head;

while ( p-next != NULL )         

{   

if( p-next-data  0)

{

p-next = p-next-next;

p = q;

}

q = p;

p = p-next;         

}

用C语言编程实现单链表的基本操作

运行结果如下:

完整代码如下:

#includestdio.h

#includestdlib.h

typedef struct LNode

{

char data;

LNode *next;

}* LNodePtr;

LNodePtr CreateList()

{

//初始化头节点

LNodePtr head = (LNodePtr)malloc(sizeof(LNode));

head-data = 0;

head-next = NULL;

LNodePtr tNode;//临时节点

char data;

while(true)

{

scanf(“%c”,data);

if(data == ‘\0’ || data == ‘\n’ || data == ‘\r’ || data == ‘\t’)

{

continue;

}

if(data == ‘!’)//输入感叹号停止插入节点

{

printf(“输入链表元素结束。\n”);

break;

}

if(data = ‘A’ data = ‘Z’)

{

tNode = (LNodePtr)malloc(sizeof(LNode));

tNode-data = data;     /*  数据域赋值  */

tNode-next = head-next;

head-next = tNode;

}

else

{

printf(“输入字符需为大写字母。\n”);

}

}

return head;

}

/**

加密函数,加密的方式为链接head的所有节点前移offset位,但是不支持offset比链表的节点数多

@param head 链表头节点

@param offset 节点前移的位数

*/

void EncryptList(LNodePtr head,int offset)

{

LNodePtr tNode = head-next;

int i;

for(i = 0; i offset; i++)

{

if(tNode-next != NULL)

{

tNode = tNode-next;

}

}

if(i == offset)

{

LNodePtr newHead = tNode;

LNodePtr tail = tNode;

while (tail-next != NULL)

{

tail = tail-next;

}

tail-next = head-next;

while(tNode-next != NULL)

{

if(tNode-next != newHead)

{

tNode = tNode-next;

}

else

{

tNode-next = NULL;

break;

}

}

head-next = newHead;

}

else

{

printf(“不支持移动”);

}

}

void ListPrint(LNodePtr head)

{

if(head-next != NULL)

{

LNodePtr tNode = head-next;

while (tNode-next != NULL)

{

printf(“%c “,tNode-data);

tNode = tNode-next;

}

printf(“%c”,tNode-data);

}

}

int main()

{

LNodePtr list = CreateList();

printf(“\n创建的链表如下:\n”);

ListPrint(list);

EncryptList(list,3);

printf(“\n所有节点前移了3位之后的链表如下:\n”);

ListPrint(list);

printf(“\n”);

return 0;

}

如果看不懂代码可以问我

用C语言实现对单链表的基本操作

#include stdio.h

#include stdlib.h

typedef int DataType;

typedef struct node {

DataType member;

struct node *next;

}*LinkList, *pNode;

// 初始化链表

LinkList GetEmptyList() {

LinkList head = (pNode)malloc(sizeof(struct node));

head-member = 0;

head-next = NULL;

return head;

}

// 在非增链表中插入结点

void InsertNode(LinkList head, DataType x) {

pNode p,q;

for(p = head; p-next != NULL; p = p-next) {

if(p-next-member = x) {

q = (pNode)malloc(sizeof(struct node));

q-member = x;

q-next = p-next;

p-next = q;

return;

}

}

q = (pNode)malloc(sizeof(struct node));

q-member = x;

q-next = p-next;

p-next = q;

}

// 新结点插入为首结点

void PushNode(LinkList head, DataType x) {

pNode p = (pNode)malloc(sizeof(struct node));

p-member = x;

p-next = head-next;

head-next = p;

}

// 删除结点

int DeleteNode(LinkList head, DataType x) {

pNode p,q;

for(p = head; p != NULL; p = p-next) {

if(p-next-member == x) {

q = p-next;

p-next = q-next;

free(q);

return 1; // 成功删除member(第一个)为x的结点

}

}

return 0; // 没有找到member为x的结点

}

// 查找结点

int FindNode(LinkList head, DataType x) {

pNode p;

for(p = head-next; p != NULL; p = p-next) {

if(p-member == x) return 1; // 找到了

}

return 0; // 没有找到

}

// 销毁链表

void DestroyList(LinkList head) {

pNode q,p = head;

while(p) {

q = p;

p = q-next;

free(q);

}

head = NULL;

}

// 遍历链表

void ShowList(LinkList head) {

pNode p = head-next;

while(p != NULL) {

printf(“%d “,p-member);

p = p-next;

}

printf(“\n”);

}

int main() {

DataType x,res;

LinkList head = GetEmptyList();

printf(“输入一个整数(‘q’ to quit): “);

while(scanf(“%d”,x) == 1) {

InsertNode(head, x); // 创建非增链表

printf(“输入一个整数(‘q’ to quit): “);

}

fflush(stdin);

ShowList(head);

printf(“输入待查找的整数: “);

scanf(“%d”,x);

res = FindNode(head, x);

if(res) printf(“找到了。\n”);

else printf(“没找到!\n”);

printf(“输入待删除的整数: “);

scanf(“%d”,x);

res = DeleteNode(head, x);

if(res) printf(“成功删除。\n”);

else printf(“没找到数据为:%d的结点!\n”,x);

ShowList(head);

DestroyList(head);

return 0;

}

原创文章,作者:BNUJ,如若转载,请注明出处:https://www.506064.com/n/144309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
BNUJBNUJ
上一篇 2024-10-24 15:28
下一篇 2024-10-25 13:51

相关推荐

  • 利用Python实现两个链表合并为一个有序链表

    对于开发工程师来说,实现两个链表合并为一个有序链表是必须掌握的技能之一。Python语言在链表处理上非常便利,本文将从多个方面详细阐述如何利用Python实现两个链表合并为一个有序…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28
  • Python作为中心语言,在编程中取代C语言的优势和挑战

    Python一直以其简单易懂的语法和高效的编码环境而著名。然而,它最近的发展趋势表明Python的使用范围已经从脚本语言扩展到了从Web应用到机器学习等广泛的开发领域。与此同时,C…

    编程 2025-04-28

发表回复

登录后才能评论