| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 370 人关注过本帖
标题:新手,帮忙看一下,单链表问题!
只看楼主 加入收藏
ityue114
Rank: 2
等 级:论坛游民
帖 子:10
专家分:27
注 册:2014-12-26
结帖率:100%
收藏
 问题点数:0 回复次数:0 
新手,帮忙看一下,单链表问题!
要求:将t在s中所有出现的的位置储存在带头结点的单链表中

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef struct node{
    int data;
    struct node *next;
}linknode,*linklist;

int index(char *S,char *t){
    int i=0,j;
     while(S[i]){     //判断主串是否为空
         j=0;          //每次进行匹配是将j置为零,以便于每一次比较都从子串的第一个结点的位置开始
         while(t[j]&&S[i+j]){
             if(S[i+j]==t[j]){   //   判断主串与子串是否相等
                  j++;               
                 if(!t[j]){       //当匹配到子串的下一个结点为空时,则说明匹配成功,然后返回i的值
                  return i;   
                  }
                 }
             else break;          //若匹配不成功,主串移向下一个位置然后再与子串开始匹配
         }
         i++;
     }
     return (-1);
}


linklist indexall(char *S,char *t){
    linklist head,p,q;
    int j,count;
    head=(linklist )malloc(sizeof(linknode));//创建一个带头结点的链表
    head->next=NULL;
    q=head;
    j=index(S,t);              //把匹配成功后的第一个匹配的结点的下标地址给j
    for(count=0;count<strlen(t);count++){      
         p=(linklist )malloc(sizeof(linknode));    //给p分配内存
         p->data=j+count;                         //把t在s中出现的位置储存在带头结点的链表中
         p->next=q->next;                         //链表的插入操作  
         q->next=p;
                     
         q=q->next;                              
            }      
                    return q;
}



void print(linklist head){
    linklist p;
    p=head->next;
    while(p){
        printf("%d",p->data);
        p=p->next;
    }


    printf("\n");
}

int main(){
    char S[80],t[80];
    linklist head;
    printf("请输入主串:");
    gets(S);
    printf("请输入子串:");
    gets(t);
    int k=index(S,t);
    printf("k=%d\n",k);
    head=indexall(S,t);
    printf("\n[%s]在[%s]中的位置有:\n",t,S);
   
    print(head);
    }
2015-11-25 21:20
快速回复:新手,帮忙看一下,单链表问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017787 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved