做了一个把名字首字母小写改大写的单链表的题,有个错误一直找不出来,求大神指点

作者在 2017-05-12 16:03:21 发布以下内容

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define  FD  'a'
#define  IT  ' '
typedef struct aaa
{
 char ch;
 struct aaa *next;
} AAA;

AAA *e_linkst()
{AAA *h;
 h=(AAA *)malloc(sizeof(AAA));
 h->next=NULL;
 return h;
}
void creat_linkst(AAA * k)
{
 AAA *p,*q;
 int i,t;
 char name[]="jessicarong";
 t=strlen(name);
 q=k;
 for(i=0;i<t;i++)
 {
  p=(AAA *)malloc(sizeof(AAA));
  p->ch=name[i];
  p->next=NULL;
  q->next=p;
  q=p;
 }

}
void print_linkst(AAA * h)
{ AAA * t;
 t=h->next;
 while(t!=NULL)
 {
  printf("%c ",t->ch);
  t=t->next;
 }
}
void insert(AAA *h,char a,char x)
{
 AAA *s,*p,*q;
    p=h->next; q=h;
 while(p!=NULL)
 {
  if(p->ch==a)
  {
   s=(AAA *)malloc(sizeof(AAA)); //1.产生新节点
     s->ch=x;//2.数据域赋值
   s->next=p;//3.连
   q->next=s;//4.断
  }
  q=p;
  p=p->next;
    }
   
    s=(AAA *)malloc(sizeof(AAA));//1.产生新节点
    s->ch=x; //2.数据域赋值
  s->next=p;//3.连
  q->next=s; //4.断
}
void find(AAA *h)//头插法
{
 AAA *p,*q;
 p=h->next;
 q=h;
 p->ch-=32;//j变大写
 while(p)
 {
  q=p;
  p=p->next;
  if(q->ch==' '&&p->ch!=' ')
  p->ch-=32;
 }
}

int main()
{
 AAA *head,*s,*p,*q,*t;
 head=e_linkst();   //建立空链表
 creat_linkst(head);//建立单链表
  printf("\n原链表数据:\n");
  print_linkst(head);//输出数据节点的值
  printf("\n\n");
 insert(head,FD,IT);//插入值为空格的新节点
  printf("\n插入节点' '后链表数据:\n");
  print_linkst(head);//输出数据节点的值
  printf("\n\n");
 find(head);
  printf("\n更改后链表数据:\n");
  print_linkst(head);
  printf("\n\n");

}

默认分类 | 阅读 979 次
文章评论,共0条
游客请输入验证码
文章分类
文章归档
最新评论