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

2025-03-04 15:20:08
推荐回答(3个)
回答1:

#include
#include

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 p=p->next;

while(count {
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");
}

回答2:

char *P, * q ;
p=s;
for (int j=0;jp=p->next;
q=p;
for (int s=0;sq=q->next;
p->next=q;

回答3:

工技大路过