1、数据结构实验数据结构实验计科0902200900 实验一线性表例题:#define NULL 0typedef struct node char a; struct node *link;node,*nodelink;void readlink(nodelink head) nodelink p,q; char c; p=head;printf(“Input a linktable(a string):”); scanf(“%c”,&c); if(c=n) printf(“This string is empty.”); while(c!=n) q=(nodelink)malloc(sizeo
2、f(node); q-a=c; p-link=q; p=q; scanf(“%c”,&c); p-link=NULL;voild writelink(nodelink head) nodelink q; if(head-link=NULL) printf(“This link is empty.n”); for(q=head-link;q;q=q-link) printf(“%c”,q-a); printf(“n”); Int insert(nodelink head,char k1,char k2) nodelink p,q; p=head-link; while(p-a!=k1&p) p=
3、p-link; if(p) q=(nodelink)malloc(sizeof(node); q-a=k2; q-link=p-link; p-link=q; return 1; else printf(“There is no %cn”,k1); return 0; int delete(nodelink head,char k) nodelink p,q; q=head; p=head-link; while(p-a)&p) q=q-link; p=p-link; If(p) q=link=p-link; return 1; elseprintf(“There is no %cn”,k);
4、return 0; void opside(nodelink head) nodelink p,q; p=head-link; while(p-link) q=p-link; p-link=q-link; q-link=head-link; head-link=q; main() char k1,k2,k3; nodelink head; head=(nodelink)malloc(sizeof(node); head-link=NULL; readlink(head); if(head-link!=NULL) printf(“Build link is :”); writelink(head
5、); if(head-link!=NULL) printf(“Please input a char you want to insert after:”); k1=getch(); printf(“%cn”,k1); printf(“Please input a char you want to insert:”); k2=get(); printf(“%cn”,k2); if(insert(head,k1,k2) printf(“After %c insert %c,link is:”,k1,k2); writelink(head); printf(“Please input a char
6、 you want to delete:”); k3=getch(); printf(“%cn”,k3); if(delete(head,k3) printf(“after delete %c,link is:”,k3); writelink(head); If(head-link!=NULL) printf(“Opsite result is :”); opsite(head); writelink(head); free(head); 习题1:#include stdio.h#include malloc.h#include conio.htypedef struct node char
7、a; struct node *link;node,*nodelink;void readlink(nodelink head) nodelink p,q; char c; p=head; printf(请输入顺序表中的递增有序元素:); scanf(%c,&c); if(c=n) printf(顺序表为空nn); while(c!=n) q=(nodelink)malloc(sizeof(node); q-a=c; p-link=q; p=q; scanf(%c,&c); p-link=0;int add(nodelink head) nodelink p; p=head; if(p-lin
8、k=0) return 0; while(p-link!=0) if(p-a p-link-a) printf(输入有误请重新输入nn); return 0; p=p-link; return 1;void insert(nodelink head,char x) nodelink p,q,m; int i=0; p=head; q=(nodelink)malloc(sizeof(node); q-a=x; m=p; while(p-link!=0) if(p-a = x) q-link=m-link; m-link=q;i=1; break; m=p; p=p-link; if(i=0) p
9、-link=q; q-link=0; int main()loop: nodelink head; nodelink p; char x,z; head=(nodelink)malloc(sizeof(node); head-link=0; readlink(head); while(add(head)=0) readlink(head); printf(您输入的顺序表为:); for(p=head-link;p!=0;p=p-link) printf(%c,p-a); printf(n请输入您要插入的字符:); x=getchar(); insert(head,x); printf(插入%c
10、后的顺序表为:,x); for(p=head-link;p!=0;p=p-link) printf(%c,p-a); printf(nn); scanf(%c,&z); goto loop;习题3:#include #include typedef struct node node;typedef struct node *p_node;struct node int element; p_node next;void Initial(int n,p_node T);p_node Search(int m,p_node pos);void MainBody(int m,int s,p_node
11、 T); main() int n,m,s; char c; p_node T=(p_node)malloc(sizeof(node); printf(请输入n,m,s:); scanf(%d %d %d,&n,&m,&s); if (s=1&m=1) for (int i=1;i=n;i+) printf(%d ,i); else Initial(n,T); MainBody(m,s,T); printf(n); free(T); getchar(); getchar();void Initial(int n,p_node T) p_node p=T; for (int i=1;ieleme
12、nt=i; p-next=q; p=q; p-next=T-next;void MainBody(int m,int s,p_node T) p_node head=T; head=Search(s,head); while (head!=head-next) p_node p; head=Search(m,head); p=head-next; head-next=p-next; printf(%d ,p-element); free(p); printf(%d ,head-element); free(head);p_node Search(int m,p_node pos) for (i
13、nt i=1;inext; return pos;实验二树例题:#include#include struct node char info; struct node *llink,*rlink; ;typedef struct node NODE;NODE *creat() char x; NODE *p; scanf(%c,&x); printf(%c,x); if(x!=.) p=(NODE *)malloc(sizeof(NODE); p-info=x; p-llink=creat(); p-rlink=creat(); else p=NULL; return p;void run(N
14、ODE *t) if(t) run(t-llink); run(t-rlink); printf(%c,t-info); main() NODE *T; printf(Please input a tree:n); T=creat(); printf(n); if(!T) printf(This is a empty binary tree.); else printf(The result of post travese is:n); run(T); printf(n);课后题1:#define NULL 0 #include#include#includetypedef struct Bi
15、Node char data; struct BiNode *lchild,*rchild; BiNode,*BiTree; int createBiTree(BiTree &T) char ch; scanf(%c,&ch); if(ch=.) T=NULL; elseT=(BiTree)malloc(sizeof(BiNode); T-data=ch; createBiTree(T-lchild); createBiTree(T-rchild); return(1);int leafcount(BiTree &T)if(!T) return(0); else if(!T-lchild&!T
16、-rchild) return(1) ; else return(leafcount(T-lchild)+leafcount(T-rchild); main()printf(Build a tree as RLD plain sequencen:); BiTree T; T=(BiTree)malloc(sizeof(BiNode); if(createBiTree(T) int a; a=leafcount(T);printf(nThe amount of leaf is %d。,a); system(pause);课后题2:#define NULL 0 #include#include#i
17、ncludetypedef struct BiNode char data; struct BiNode *lchild,*rchild; BiNode,*BiTree; int c,k; int createBiTree(BiTree &T) char ch; scanf(%c,&ch); if(ch=.) T=NULL; elseT=(BiTree)malloc(sizeof(BiNode); T-data=ch; createBiTree(T-lchild); createBiTree(T-rchild); return(1);void getnode(BiTree &T)if(T) c
18、+; if(c=k)printf(nnode is %cn,T-data); else getnode(T-lchild); getnode(T-rchild); main()printf(Build a tree as RLD plain sequencen:); BiTree T; T=(BiTree)malloc(sizeof(BiNode); createBiTree(T);c=0;printf(please input a number:); scanf(%d,&k); printf(nGet the RLD plain sequence %dth node。,k); getnode
19、(T); system(pause);实验三图例题:#includeint number;typedef struct int q20; int f,r;queue;int nodelist2020;queue Q;int z20; int a,b,n,i,j,x,y; int finished;void enq(queue *Q,int x) Q-qQ-r=x; if(Q-r=19) Q-r=0; else Q-r+; if(Q-r=Q-f) printf(Overflow!n);front(queue *Q) if(Q-r=Q-f) printf(Underflow!n); else re
20、turn(Q-qQ-f);void deq(queue *Q) if(Q-r=Q-f) printf(Underflow!n); else if(Q-f=19) Q-f=0; else Q-f+; int qempty(queue Q) if(Q.f=Q.r) return 1; else return 0;void readgraph() printf(nPlease input n:); scanf(%d,&n); printf(Please input nodelistij:n); for(i=1;i-n;i+) for(j=1;j=n;j+) scanf(%d,&nodelistij)
21、; printf(n); printf(List-link is bulitn); for(i=1;i=n;i+) for(j=1;j=n;j+) printf(%3d,nodelistij); printf(n); void shortest(int a,int b) if(a=b) nodelistaa=2; else enq(&Q,a); nodelistaa=2; finished=0; while(!qempty(Q)&!finished) a=front(&Q); deq(&Q); j=1; while(j=n)&!finished) if(nodelistaj=1)&(nodel
22、istjj!=2) enq(&Q,j); nodelistjj=2; zj=a; if(j=b) finished=1; if(!finished) j+; if(!finished) printf(There is no path.); void writepath(int a,int b) i=b; while(i!=a) printf(%dnextarc=NULL;if(y=n)return;elsex=(int)y-48;ArcNode *t;t=new ArcNode;t-nextarc=NULL;t-in=0;t-adjvex=x;firstarc-nextarc=t;read(f
23、irstarc-nextarc);void mkgraph(ALGraph *graph)char rub;ArcNode *t;VNode *list;scanf(%c,&rub);for(;sverticess.firstarc=t;read(graph-verticess.firstarc);void run(ArcNode *firstarc)ArcNode *t;t=firstarc;if(t-adjvex=j)m=1;return;if(t-in=0&m=0&t-adjvex0&t-adjvexverticest-adjvex.firstarc-nextarc!=NULL)t-in
24、=1;run(graph-verticest-adjvex.firstarc-nextarc);if(m=0&t-nextarc!=NULL)run(t-nextarc);int main()graph=new ALGraph;printf(顶点树:);scanf(%d,&n);printf(以邻接表方式依次输入各顶点的关系:n);mkgraph(graph);printf(已生成图.nn请输入要寻找路径的起点i和终点j(i!=j):);scanf(%d%d,&i,&j);while(i=j|in|jn)printf(对不起,输入有误,请重新输入:);scanf(%d%d,&i,&j);run(graph-verticesi.firstarc-nextarc);if(m=1)printf
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1