⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lstrsubs.c

📁 《数据结构》教材源程序,可以让你轻松的根据教材学习数据结构
💻 C
字号:
#include <stdio.h>
#define null 0
typedef struct node
   {
      char data;
      struct node *next;
    } linkstrnode;
typedef linkstrnode *linkstring;

/*-----------------------------*/
/*     尾插法建立单链表        */
/*-----------------------------*/
void strcreate(linkstring *S)
{ char ch;
  linkstrnode *p,*r;
  *S=NULL; r=NULL;
  while ((ch=getchar())!='\n')
   { p=(linkstrnode *)malloc(sizeof(linkstrnode));
     p->data=ch;     /*产生新结点*/
     if (*S==NULL) /*新结点插入空表*/
         *S=p;
     else r->next=p;
     r=p;
   } /*处理表尾结点指针域*/
   if (r!=NULL)  r->next=NULL;
}
/*-------------------------------*/
/*     输出单链表的内容          */
/*-------------------------------*/

void outlinkstring(linkstring head)
{
 linkstrnode *p;
 p=head;
 while (p)
  {printf("%c-->",p->data);
   p=p->next;
  }
  printf("\n");
 }
linkstring substring(linkstring S,int i, int len)
{
    int k;
    linkstring p,q,r,t;
    p=S, k=1;
    while (p && k<i) {p= p->next;k++;}
    if (!p)  {printf("error1\n"); return(null);}
    else
      { 
         r=(linkstring ) malloc (sizeof(linkstrnode));
         r->data=p->data; r->next=null;
         k=1; q=r;
         while (p->next  && k<len)
           { p=p->next ;k++;
             t=(linkstring) malloc (sizeof (linkstrnode));
             t->data=p->data; q->next=t; q=t;
            }
         if (k<len) {printf("error2\n") ; return(null);}
         else
            {q->next=null; return(r);}
       }
}
main()
{ int i,len;
  linkstring head1,p;
  strcreate(&head1);
  scanf("%d%d",&i,&len);
  p=substring(head1,i,len);
  outlinkstring(p);  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -