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

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

发布网友 发布时间:2022-04-22 11:49

我来回答

4个回答

热心网友 时间:2023-11-03 17:03

运行结果如下:


完整代码如下:


#include<stdio.h>

#include<stdlib.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;

}


如果看不懂代码可以问我

热心网友 时间:2023-11-03 17:04

第二个显示为什么?为什么什么东西都没有、
#include<stdio.h>
typedef struct sample
{
char ch;
struct sample *next;
}LNode;

LNode *Createlist(LNode *head) //创建单链表,头插入法
{
LNode *p;
if((head=(LNode *)malloc(sizeof(LNode)))==NULL)
printf("aply error\n");
head->next=NULL;
head->ch = '\0';
int i= 0;
printf("请一次输入A-Z:\n");
for(i = 0 ; i < 26; ++i)
{
p=(LNode *)malloc(sizeof(LNode));
if(!p)
printf("aply error\n");
scanf("%c",&p->ch);
p->next = head->next;
head->next=p;
}
return head;
}
LNode *EncryptList(LNode* head)
{
LNode *p= head,*q = head->next,*r = head->next;
while(p->next)
{
p = p->next;
}
int i = 0 ;
for(i = 0 ; i < 3; i++)
{
p->next = r;
p = p->next;
q = q->next;
r = q;
}
p->next =NULL;
head->next = q;

return head;

}

void ListPrint(LNode *head)
{
LNode *p = head->next;
while(p->next!=NULL)
{
printf("%c\t",p->ch);
p=p->next;
}
printf("%c\n",p->ch);
}

int main(void)
{
LNode *head;
head = Createlist(head);//链表初始化
ListPrint(head); //打印单链表数据
head = EncryptList(head);
ListPrint(head);
return 0;
}
看看。

热心网友 时间:2023-11-03 17:04

#include <stdio.h>

typedef struct node{
char key;

struct node* next;

}Node;

Node* CreateList() //逆序创建一个链表

{
Node* head = (Node*)malloc(sizeof(Node));

Node* p = NULL;

Node* q = NULL;
int i = 0;
char data = 0;

for(i = 0; i < 26; i++)

{
while((data = getchar()) != (i+65) );
if(i == 0)
{
p = (Node*)malloc(sizeof(Node));

p->key = data;

p->next = NULL;
}
else
{
q = (Node*)malloc(sizeof(Node));

q->key = data;

q->next = p;

p = q;

}
}
head->next = q;

return head;

}
void EncryptList(Node* head) //对链表元素进行移位,你是想加密?
{
Node* p = NULL;

if(head == NULL || head->next == NULL)

return ;

p = head->next;

while(p)

{

p->key += 3;

p = p->next;

}

}
void ListPrint(Node* head) //显示所有链表元素
{
Node* p = NULL;

if(head == NULL || head->next == NULL)

return ;

p = head->next;

while(p)

{
printf("%c ", p->key);

p = p->next;

}

}
void DestroyList(Node** headp) //销毁链表
{
Node* p = *headp;

Node* q = NULL;

while(p)

{
q = p->next;

free(p);

p = q;

}
*headp = NULL;

}
int main(void) //主函数
{
Node* head = NULL;

head = CreateList();

ListPrint(head);

EncryptList(head);
ListPrint(head);

DestroyList(&head);

return 0;

}
//没有测试,找到bug给我说一声

热心网友 时间:2023-11-03 17:05

这个教科书上很多的。纯属支持楼上。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 C语言用链表做ATM机 tdm机是什么?他的链接方式与atm机有什么区别? 农行ATM退卡前有一个链接提示是什么 如何在页面中实现excel文件导入到数据库中 404 Not Found Excel表格里的数据是存储在数据库里吗 如何做excel数据导入到数据库 EXCEL导入到数据库 怎么样把excel数据导入到数据库中 怎么把excel表格导入到数据库 女孩过生日,一个男孩送发夹给女孩代表什么 我喜欢的女生送我她的发夹代表什么意思 女生把她的发夹送我是什么意思? 一个男孩送发夹给女孩代表什么? 梦见别人送我黑发夹,,啥意思 送女生发夹代表什么含义 梦见别人送我发夹是什么样的梦? 梦见自己拿发夹折断给个女孩捅死了 梦见送你情人钢笔和发夹是什么预意 家长对孩子的寄语怎么写 家长寄语怎么写啊 初中生家长对孩子的寄语怎么写? 父母写给孩子的寄语 家长寄语怎么写, 四年级家长对孩子的寄语怎么写 中国业务员的网站 网络业务平台需要哪些专业 有什么平台或者网站可以发布消息增加自己的业务曝光? 国内有哪些免费网站适合做业务推广? qq业务网站平台 那些网站可以发布业务信息? 跑业务的人经常上哪些网站? 哪些业务网站适合租用日本服务器? 互联网保险业务自营平台 有人知道超牛网是做什么业务的平台吗? 互联网运营主要做什么 翼TV业务视频门户网站是什么呢? 二手交易平台有哪些 金融猫是做什么业务的网站?