admin 管理员组

文章数量: 887042


2024年1月28日发(作者:fedora workstation)

五.算法设计程序流程图算法概要流程图如下:题目:线性表的逆置

ch=getchar())!='*'开始Char chR=head《数据结构与算法》课程设计报告s=(linklist*)malloc(sizeof(linklist));s->data=ch;r->next=s;r=s;否r->next=NULL

p->next=NULL;s-q->next=p;p=q;q=s;s=s->next;S!=NULL>next!=NU是q=p->next;s=q->next;开始{linklist*p,*q,*s; p=head->next;是否否q->next=p;s->next=q;head->next=ss=p;head->next=q;

 单链表:#include数据对象:D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 }

关系:S={ | ai, ai+1∈D,i=1,2, …,n-1}数据关系:R1={ |ai-1 ,ai∈D, i=2,...,n }基本操作:1 InitList(&L) 操作结果:将L初始化为空表。2 ClearList(&L)

操作前提:线性表L已存在 。操作结果:将表L置为空表。3 EmptyList(L)操作前提:线性表L已存在。操作结果:如果L为空表则返回真,否则返回假。4 ListLength(L)操作前提:线性表L已存在。操作结果:如果L为空表则返回0,否则返回表中的元素个数。5 GetItem(L,i,&e)操作前提: 表L已存在,1<=i<=listlength(L)。操作结果: 用e返回L中第i个元素的值。6 LocateElem(L,e)操作前提: 表L已存在,e为合法元素值。操作结果: 如果L中存在元素e,则将“当前指针”指向元素e所在位置并返回真,否则返回假。

#include 函数之间的调用关系(子程序编号见下): 主函数可调用子程序(1)(4)(7);(10)(13) 子程序(1)可调用子程序(2)(3) 子程序(2)可调用子程序(3) 子程序(4)可调用子程序(5)(6) 子程序(7)可调用子程序(8)(9) 子程序(10)可调用子程序(11)(12) 子程序(13)可调用子程序(14)(15)//单链表结构类型定义typedef char datatype;六.C语言实现的程序清单算法用到的抽象数据类型定义:

}(5)if(s!=NULL){}r->next=NULL;(3)while((ch=getchar())!='*'){(2)s=(linklist*)malloc(sizeof(linklist));s->data=ch;r->next=s;r=s;typedef struct node{datatype data;struct node *next;}linklist;void create(linklist*&); void invert(linklist*);void print(linklist *);void main(){linklist*head;create(head);(6)while(s->next!=NULL)(2)head=(linklist*)malloc(sizeof(linklist));r=head;//单链表逆置(4)void invert(linklist*head){linklist*p,*q,*s;p=head->next;q=p->next;s=q->next;p->next=NULL;//采用尾插法建立具有头结点的单链表(1)void create(linklist*&head){char ch;linklist *s,*r;invert(head);//调用单链表逆置的函数print(head);}

}}(9)printf("n");(9)printf("%c",p->data);p=p->next;(8)while(p!=NULL){{q->next=p;p=q;q=s;s=s->next;}q->next=p;s->next=q;head->next=s;} else {s=p;head->next=q;}}//输出单链表(7)void print(linklist *head){linklist*p=head->next;顺序列表:#include#include//顺序表结构类型定义typedef char datatype;const int maxsize=1024;typedef struct{ datatype data[maxsize]; int last;}sequenlist;void create(sequenlist*&);void print(sequenlist*);void main(){sequenlist*L;create(L);//建立顺序表print(L);//输出顺序表}

//输出顺序表(13)void print(sequenlist*L){(14)for(int i=L->last;i>=0;i--)(15)printf("%c",L->data[i]);(14)printf("n");}//建立顺序表(10)void create(sequenlist*&L){(11)L=(sequenlist*)malloc(maxsize*sizeof(sequenlist*));L->last=0;char ch;(12)while((ch=getchar())!='*'){

L->last++;L->data[L->last]=ch;}}


本文标签: 算法 调用 返回 操作