补全以下代码:#include <stdio.h> #include <stdlib.h> struct node{ char data; int count; struct node *next; }; struct node *insert(struct node *head, char ch) { struct node *p1,*p2, *p; int flag; /*****************************************/ p=(struct node *)malloc(______1_______); /*****************************************/ p->data=ch; p->count=1; if(head==NULL){ /*****************************************/ ______2_______; /*****************************************/ p->next=NULL; flag=0; } else{ p1=head; while(p1->data>ch && p1->next!=NULL){ p2=p1; p1=p1->next; } if(p1->data==ch){ /*****************************************/ ________3________; /*****************************************/ flag=1; } else if(p1->data<ch){ if(head==p1) head=p; else p2->next=p; p->next=p1; flag=0; } else{ p1->next=p; p->next=NULL; flag=0; } } /*****************************************/ if(______4_________) free(p); /*****************************************/ return head; } int main(void) { char ch; struct node *head=NULL,*p; while((ch=getchar())!='\n') head=insert(head,ch); p=head; while(p!=NULL){ printf("%c:%d\n",p->data,p->count); p=p->next; } }
时间: 2023-06-29 18:05:21 浏览: 223
#include <stdio.h>
#include <stdlib.h>
struct node{
char data;
int count;
struct node *next;
};
struct node *insert(struct node *head, char ch) {
struct node *p1,*p2, *p;
int flag;
p=(struct node *)malloc(sizeof(struct node)); // 1. 分配一个新的节点
p->data=ch;
p->count=1;
if(head==NULL){
head=p; // 2. 如果链表为空,将新节点作为头结点
p->next=NULL;
flag=0;
}
else{
p1=head;
while(p1->data>ch && p1->next!=NULL){
p2=p1;
p1=p1->next;
}
if(p1->data==ch){ // 3. 如果链表中已经存在该字符,计数器加1
p1->count++;
free(p); // 如果不需要插入新节点,则释放新节点的内存
flag=1;
}
else if(p1->data<ch){ // 4. 将新节点插入到链表中
if(head==p1) head=p;
else p2->next=p;
p->next=p1;
flag=0;
}
else{
p1->next=p;
p->next=NULL;
flag=0;
}
}
if(flag) free(p); // 如果不需要插入新节点,则释放新节点的内存
return head;
}
int main(void) {
char ch;
struct node *head=NULL,*p;
while((ch=getchar())!='\n') head=insert(head,ch);
p=head;
while(p!=NULL){
printf("%c:%d\n",p->data,p->count);
p=p->next;
}
return 0;
}
阅读全文