数据结构c语言作业,用c语言写的数据结构作业

本文介绍了一个使用C语言实现的单链表数据结构及其基本操作,包括插入、删除和移动等。通过具体代码示例展示了如何对链表进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【输入到(1 m)的时候会直接跳出程序】

题目和输入要求

5acd8c13ead6edeac2747594c703a433.png

3cf4b7de23259edfddb7586f6bf6fa37.png

代码的图片版,文字版在下方

46e15dbbb5d20aadb5ed6a7c96b1cd08.png

790c17177198182ebb62b2dcae1f5703.png

2a2c55e380dbacb82cb9d663a79052a1.png

b6e0adb57da873659157191f4b0571b3.png

#include

#include

#include

typedef struct Node

{

char data;

struct Node *next;

}node;

node *add(char c[],int lenth);

node *add1(node* op);

void delate(node* op);

node *move(node* op,node* head);

int main()

{

node *head=NULL,*p=NULL,*q=NULL;

int steps,lenth,count=0,option;

char S[101];

scanf(“%d”,&steps);

getchar();

gets(S);

lenth = strlen(S);      //求出输入数组长度

head =(node*)malloc(sizeof(node));   //给结点申请空间

p =(node*)malloc(sizeof(node));

head->next= p->next = add(S,lenth);     //将输入的数组放到链表中,并返回链表的头节点

//头节点是赋给这两个节点的next,原因是根据题目来看,一开始的操作位置是在最前面

while(count 

{

scanf(“%d”,&option);         //输入操作选项

switch(option)

{

case 1:p=add1(p);break;            //操作1:往操作位置顺时针的下一位插入一个元素,并将操作位置移到新元素上

case 2:delate(p);break;            //操作2:删掉操作位置顺时针方向的下一位,假如机器中没有数据,不做操作(但是题目并不存在这个问题

case 3:p=move(p,head);break;       //操作3:使得操作位置向顺时针移动一位

}

count++;                    //循环条件++

}

while(p->next!=NULL)

{

printf(“%c”,p->data);     //输出链表的循环

p=p->next;

}

}

node *add(char c[],int lenth)

/*

一开始将数组输入单链表的函数

*/

{

node *p=NULL,*q=NULL,*head=NULL;        //结点们

int i;

p = (node*)malloc(sizeof(node));    //申请p结点的空间

head = p;                            //保证head结点永远指向链表头部

for(i=0;i

{

p->data=c[i];

q = (node*)malloc(sizeof(node));          //链表的输入

p->next=q;

p = q;

}

return head;

}

node *add1(node* op)

/*

操作1的函数

*/

{

char c;

node* q;             //结点

scanf(” %c”,&c);         //输入要插入的字母c

q=(node*)malloc(sizeof(node));     //申请结点空间

q->data = c;

q->next = op->next;

op->next = q;

op = q;

return op;

}

void delate(node* op)

/*

操作2的函数

*/

{

op->next = op->next->next;

}

node *move(node* op,node* head)

/*

操作3的函数

*/

{

if(op->next=NULL)

{

return head;

}

else

{

op=op->next;

return op;

}

}

解决方案

70

if(op->next=NULL)

改成

if(op->next==NULL)

70

代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。

提醒:再牛×的老师也无法代替学生本人领悟和上厕所!

单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用c语言写的数据结构作业!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值