求教一道C语言的题目……谢谢各位大神了
展开全部
#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");
}
#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");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询