堆串的插入
阿新 • • 發佈:2018-11-29
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node {char *a; int b; }node;//堆串 node fuzhi(node s,char c[]) {int i=0,j; j=strlen(c); s.a=(char*)malloc(j); while(i<40&&c[i]!='\0') {s.a[i]=c[i]; i++;} s.a[i]='\0'; s.b=i; return s;}//fuzhi node charu(node s,int pos,node p) {if(pos<=0||pos>s.b) {printf("插入未知錯誤"); exit(1); } int i; char *temp; temp=(char*)malloc(s.b+p.b); for(i=0;i<pos-1;i++) temp[i]=s.a[i]; for(i=0;i<p.b;i++) temp[i+pos-1]=p.a[i]; for(i=pos-1;i<s.b;i++) temp[i+p.b]=s.a[i]; temp[s.b+p.b]='\0'; free(s.a); s.a=temp; s.b+=p.b; return s; }//插入 int main() {char c[40]; int pos,weizhi; node s,p; scanf("%s",c); s=fuzhi(s,c); p=fuzhi(p,c); printf("請輸入p串插入s的位置\n"); scanf("%d",&pos); s=charu(s,pos,p); printf("%s",s.a); } 在這裡插入程式碼片