m0_61866399 2021-10-04 22:11 采纳率: 33.3%
浏览 45
已结题

为什么插入和删除的部分出不来

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct Node
{int data;
struct Node* next;
}linklist;
linklist *head,*p;
linklist *CREATLISTRO()//尾插法建立单链表
{
char ch;
linklist *head,*s,r;
head=NULL;
r=NULL;
printf("开始建立单链表输入$结束\n");
ch=getchar();
while(ch!='$')
{
s=(linklist
)malloc(sizeof(linklist));
s->data=ch;
if(head==NULL)
head=s;
else
r->next=s;
r=s;
ch=getchar();
}
if(r!=NULL)
r->next=NULL;
return head;
}
///
//输出单链表/1
void ShowList(linklist *head)
{
linklist *p;
printf("输出单链表:"); p=head;
if(head->next==NULL)
printf("表为空\n");
else
while(p!=NULL)
{
printf(" %c ",p->data);
p=p->next;
}
printf("\n");
}
//求单链表长度//
void LENGTH(linklist *head)
//求长度
{
int n=0;
linklist *p;
p=head;
if(head->next==NULL)
printf("表为空\n");
else
while(p->next!=NULL)
{
n++;
p=p->next;
}
printf("\n该单链表的长度为:%d\n",n+1);
}
linklist GET(linklisthead,int i)
{
int j;
linklist *p;
p=head;
j=0;
while((p->next!=NULL)&&(j<i))
{
p=p->next;
j++;
}
if(i==j)
return p;
else
return NULL;
}
linklist LOCATE(linklisthead,int key)
{
linklist *p;
p=head->next;
while(p!=NULL)
if(p->data!=key)
p=p->next;
else break;
return p;
}
linklist INSERTBEFORE(linklisthead)//前插
{
linklist *s,q;
int i;
int x;
printf("\n请输入插入的结点:");
getchar();
scanf("%c",&x);
printf("请输入插入的位置:");
scanf("%d",&i);
getchar();
p=GET(head,i);
s=(linklist
)malloc(sizeof(linklist));
s->data=x;
q=head;
while(q->next!=p)
q=q->next;
s->next=p;
q->next=s;
printf("插入成功!\n");
return head;
}
void *DELETE(linklist *head,int i)
{
linklist *p,*r;
int j;
j=i-1;
//j=i-1;
p=GET(head,j);
if((p!=NULL)&&(p->next!=NULL))
{
r=p->next;
p->next=r->next;
free(r);
printf("\n删除成功!");
}
else
printf("error!");
}
int main()
{
int j=1,g=1,h=1;
int i=1;
int n,key;
head=CREATLISTRO();
ShowList(head);
printf("请输入须查找位置:");
scanf("%c",&n);
p=GET(head,n);
getchar();
printf("在%d位置上的结点为:%c\n",n,p->date);
LENGTH(head);
INSERTBEFORE(head);
ShowList(head);
printf("请输入删除的结点:\n");
scanf("%d",&i);
p=DELETE(head,i);
ShowList(head);
getchar();
}

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-10-05 04:14
    关注

    scanf("%c",&n)改为
    scanf("%d",&n);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月4日

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀