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

C语言 码拜 3年前 (2017-04-11) 282次浏览
【输入到(1 m)的时候会直接跳出程序】
题目和输入要求
用c语言写的数据结构作业
用c语言写的数据结构作业
代码的图片版,文字版在下方
用c语言写的数据结构作业
用c语言写的数据结构作业
用c语言写的数据结构作业
用c语言写的数据结构作业
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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 < steps)          //设置一个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<lenth;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语言写的数据结构作业
喜欢 (0)
[1034331897@qq.com]
分享 (0)