下载资源后端资源详情
C_DataStructure.zip
大小:11.36KB
价格:45积分
下载量:0
评分:
5.0
上传者:qq_52997234
更新日期:2025-09-22

C-DataStructure.zip

资源文件列表(大概)

文件名
大小
赵世行/单链表.cpp
2.35KB
赵世行/广义表.cpp
2.91KB
赵世行/链串.cpp
4.64KB
赵世行/链队.cpp
2.33KB
赵世行/链栈.cpp
1.22KB
赵世行/树.cpp
3.73KB
赵世行/顺序表.cpp
1.42KB
赵世行/顺序串.cpp
2.62KB
赵世行/顺序栈.cpp
1.16KB
赵世行/图.cpp
4.06KB
赵世行/循环队列.cpp
1.5KB

资源内容介绍

C_DataStructure
//分配 复制 相等 求长 合并 子串 串插串 删除 替代 打印 #include<bits/stdc++.h>using namespace std;typedef struct SNode{ char data; struct SNode *next;}LinkString;LinkString *Assign(char t[]){ LinkString *r,*p,*s=new LinkString; s->next=NULL;r=s; for (int i=0;t[i]!='\0';i++){ LinkString *p=new LinkString;p->data=t[i];p->next=NULL;r->next=p;r=p;}return s;}void Copy(LinkString *&s,LinkString *t){ LinkString *p=t->next,*q,*r; s->next=NULL;r=s; while(p){ LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; }}int Equal(LinkString *s,LinkString *t){ LinkString *p=s->next,*q=t->next; while (p&&q&&p->data==q->data){ p=p->next; q=q->next; } if (p==NULL&&q==NULL) return 1; else return 0; }int Length(LinkString *s){ int i=0; LinkString *p=s->next; while(p){p=p->next; i++; } return i;}LinkString *Concat(LinkString *s,LinkString *t){ LinkString *str=new LinkString,*p=s->next,*q,*r; str->next=NULL;r=str; while(p){//复制s LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; } p=t->next; while(p){//复制t LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; } return str;}LinkString *Sub(LinkString *s,int i,int j){//对s取i-j的子串 LinkString *str=new LinkString,*p=s->next,*q,*r; str->next=NULL;r=str; if (i<=0 || i>Length(s) || j<0 || i+j-1>Length(s)) return str; for (int k=0;k<i-1;k++) p=p->next; for (int k=1;k<=j;k++){ LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; } return str;}LinkString *Ins(LinkString *s,LinkString *t,int i){ LinkString *str=new LinkString,*p=s->next,*p1=t->next,*q,*r; str->next=NULL;r=str; if (i<=0 || i>Length(s)+1) return str; for(int k=1;k<i;k++){ //将s的前i个结点复制到str LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; } while(p1){ //将t的所有结点复制到str LinkString *q=new LinkString; q->data=p1->data;q->next=NULL; r->next=q;r=q; p1=p1->next; } while(p){ //将*p及其后的结点复制到str LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; }return str;}LinkString *Delete(LinkString *s,int i,int j){ LinkString *str=new LinkString,*p=s->next,*q,*r; str->next=NULL;r=str; if (i<=0 || i>Length(s) || j<0 || i+j-1>Length(s)) return str;for (int k=0;k<i-1;k++){ LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; } for (int k=0;k<j;k++) //让p沿next跳j个结点 p=p->next; while(p){ //将*p及其后的结点复制到str LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; }return str;}LinkString *Represent(LinkString *s,LinkString *t,int i,int j){ LinkString *str=new LinkString,*p=s->next,*p1=t->next,*q,*r; str->next=NULL;r=str; if (i<=0 || i>Length(s) || j<0 || i+j-1>Length(s)) return str; for (int k=0;k<i-1;k++){ LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; } for (int k=0;k<j;k++) //让p沿next跳j个结点 p=p->next; while(p1){ //将t的所有结点复制到str LinkString *q=new LinkString; q->data=p1->data;q->next=NULL; r->next=q;r=q; p1=p1->next; } while(p){ //将*p及其后的结点复制到str LinkString *q=new LinkString; q->data=p->data;q->next=NULL; r->next=q;r=q; p=p->next; }return str;}void Disp(LinkString *s){ LinkString *p=s->next; while (p){cout<<p->data<<" ";p=p->next;}cout<<"\n";}int main(){char n1[]={'z','s','h','z','s'};char n2[]={'f','n','z','m'};LinkString *s=Assign(n1);LinkString *t=Assign(n2);Disp(s);Copy(s,t);Disp(s);cout<<Equal(s,t)<<endl;cout<<"串长为:"<<Length(s)<<endl;Disp(Concat(s,t));Disp(Sub(s,2,3));Disp(Ins(s,t,2));}

用户评论 (0)

发表评论

captcha