WORD格式可编辑 p=p->next; }
return 0; }
main()
{ SLIST *head; int k; char ch; char a[N]={'m','p','g','a','w','x','r','d'}; head=creatlist(a); outlist(head);
printf(\ scanf(\ k=fun(head,ch);
if (k==0) printf(\
else printf(\}
SLIST *creatlist(char *a) {
int i;
SLIST *tou,*p;
tou=(SLIST*)malloc(sizeof(SLIST)); //创建并初始化头结点 tou->data=N; tou->next=NULL;
 for(i=0;i   p=(SLIST*)malloc(sizeof(SLIST));   p->data=a[i];    p->next=tou->next;   tou->next=p;  }   return tou; }  void outlist(SLIST  *h) {  SLIST  *p;    p=h->next;     if (p==NULL)  printf(\  else    {  printf(\     do       { printf(\     while(p!=NULL);      printf(\  } }                         专业知识分享                         WORD格式可编辑     3、//去偶操作,链表中各节点按数据域递增有序链接,函数fun的功能是,删除链表中数据域值相同的节点,使之只保留一个  #include        struct list  *next; } SLIST;  void  fun( SLIST *h) {   SLIST *p,*shanchu;   //用于遍历的指针p,用于删除的指针shanchu  p=h->next;     /p为寿元节点  while(p->next!=NULL)  //终止条件  {    if(p->data==p->next->data) //判断是否有重复原素   {     shanchu=p->next;     p->next=shanchu->next;    free(shanchu);   }   else     p=p->next;  } }  SLIST *creatlist(int  *a)  {  SLIST  *h,*p,*q;      int  i;     h=p=(SLIST *)malloc(sizeof(SLIST));    for(i=0; i    {  q=(SLIST *)malloc(sizeof(SLIST));       q->data=a[i];  p->next=q;  p=q;    }     p->next=0;    return h;                         专业知识分享                         WORD格式可编辑 }  void outlist(SLIST  *h) {  SLIST  *p;    p=h->next;     if (p==NULL)  printf(\   else     {  printf(\       do { printf(\      printf(\  } }  main( )  {  SLIST  *head;      int  a[N]={1,2,2,3,4,4,4,5};    head=creatlist(a);     printf(\   fun(head);     printf(\}    4、//在main函数中多次调用fun函数,每调用一次fun函数,输出链表尾部节点中的数据,并释放该节点,使得链表缩短。  #include        struct list  *next; } SLIST;  void fun( SLIST  *p) {   SLIST *bianli,*shanchu;    //遍历,删除  bianli=p;         while(bianli->next->next!=NULL)    {    bianli=bianli->next;   }            printf(\  //输出                         专业知识分享                         WORD格式可编辑  shanchu=bianli->next;      //释放  free(shanchu);  bianli->next=NULL; }  SLIST *creatlist(int  *a)  {  SLIST  *h,*p,*q;      int  i;     h=p=(SLIST *)malloc(sizeof(SLIST));    for(i=0; i    {  q=(SLIST *)malloc(sizeof(SLIST));       q->data=a[i];  p->next=q;  p=q;    }     p->next=0;    return  h; }  void outlist(SLIST  *h) {  SLIST  *p;    p=h->next;     if (p==NULL)  printf(\   else     {  printf(\       do { printf(\      printf(\   } }  main()  {  SLIST  *head;     int  a[N]={11,12,15,18,19,22,25,29};    head=creatlist(a);     printf(\   printf(\   while (head->next != NULL){      fun(head);       printf(\      printf(\   } }                         专业知识分享                         WORD格式可编辑     5、实现约瑟夫环函数(选做) #include        struct list  *next; } SLIST;   SLIST *creatlist(int m) {     int i;   SLIST *tou,*p,*wei;                //头指针  生成节点指针   尾指针  tou=(SLIST*)malloc(sizeof(SLIST)); //头节点  wei=tou;                         专业知识分享