#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();
}
为什么插入和删除的部分出不来
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-link 2021-10-05 04:14关注
scanf("%c",&n)改为
scanf("%d",&n);本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 mmocr的训练错误,结果全为0
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀