求教一道C语言的题目……谢谢各位大神了

字符串S用单链表储存,删除从第i个开始的连续K个字符用C语言编写,谢谢了... 字符串S用单链表储存,删除从第i个开始的连续K个字符 用C语言编写,谢谢了 展开
 我来答
希声和寡
2011-12-25 · TA获得超过2.6万个赞
知道大有可为答主
回答量:6437
采纳率:0%
帮助的人:3388万
展开全部
#include<stdlib.h>
#include<stdio.h>

typedef struct list
{
char ch;
struct list *next;
} LST;

LST *mycreat()
{
char ch=0;
LST *head=NULL,*p=NULL,*q=NULL;
head=(LST*)malloc(sizeof(LST));
q=head;
printf("请输入字符串:\n");

while((ch=getchar())!='\n')
{
p=(LST*)malloc(sizeof(LST));
q->next=p;
p->ch=ch;
q=p;
}
q->next=NULL;
return head;
}

int thelength(LST *head)
{
int length=0;
LST *p=NULL;
p=head;
while(p!=NULL)
{
p=p->next;
length++;
}
return length;
}

int mydelete (LST* head,int begin,int len)
{
int i,count=0;
LST *p=NULL,*q=NULL;

p=head;

if(head==NULL) return 0;
if(begin<=0||len<=0) return 0;
if(begin+(len-1)>thelength(head)) return 0;

for(i=0;i<begin-1;i++)
p=p->next;

while(count<len)
{
q=p->next;
p->next=q->next;
free(q);
count++;
}
return 1;
}

void myprint(LST *head)
{
LST *p=NULL;
p=head->next;
if(p==NULL)printf("\n empty list!");
else
do
{
printf("%c",p->ch);
p=p->next;

}while(p!=NULL);
printf("\n");
}

void main()
{
int result=0;
int begin,len;
LST *head=NULL;
head=mycreat();

printf("请输入开始位置:\n");
scanf("%d",&begin);
fflush(stdin);
printf("请输入需要删除的长度:\n");
scanf("%d",&len);

result=mydelete(head,begin,len);
if(result==1)
{
printf("删除后的字符串为: \n");
myprint(head);

}
else printf("Error.\n");
}
984020848
2011-12-25 · TA获得超过122个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:120万
展开全部
char *P, * q ;
p=s;
for (int j=0;j<i;j++)
p=p->next;
q=p;
for (int s=0;s<k;s++)
q=q->next;
p->next=q;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-25
展开全部
工技大路过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式