还剩3页未读,继续阅读
文本内容:
裁据修构锦程像合实制想告综合实训报告一.问题的描述不同存储结构实现线性表的就地逆置,线性表的就地逆置就是在原表的存储空间内将线性表al,a2,...,an-l,an逆置为an,an-l,...,a2,al o二.数据结构的设计由于线性表在内存中是线性存储的,故设计其数据结构类型如下以顺序存储方式建立顺序表typedef struct{int data[maxsize];int last;}SeqList;以链式存储方式建立的单链表typedef struct Nodeint data;struct Node*next;}Node;说明:由于本实验重在算法的实现,故将线性表设计的很简单,以便于操作.三.函数功能、参数说明及概要设计1,函数ReverseOrderSeqList*L功能说明:实现顺序表在内存中的逆置.算法设计void ReverseOrderSeqList*L{PrintOrde L;int i;int j;fori=0,j=L-last;ij;i++,j—{L-data[i]=L-〉data[j「=L-data[i/=L-data[j];〃值互换PrintOrder L;printf〃顺序表逆置成功!\n〃;2,函数PrintOrde SeqList*L功能说明:从屏幕依次输出顺序表的成员算法设计PrintOrderL;printf顺序表逆置成功!\n〃;〃尾插法建单链表void CreateChainNode*H Node*s;Node*p;〃动态指向表尾P=H;
3.函数ReverseChain Node*H功能说明:实现单链表在内存中的逆置.算法设计:.void ReverseOrderSeqList*L{PrintOrde L;int i;int j;for i=0,j=L-last;i j;i++,j—{L-data[i]=L-data[j]^=L-data[i]/=L-data[j];〃值互换PrintOrder L;printf〃顺序表逆置成功!\n〃;
4.函数PrintChain Node*H功能说明:从屏幕依次输出单链表的成员.算法设计void PrintChaiNode*H|printf〃逆置前单链表为\n〃;Node*p;p=H-next;whilep!=NULLprintf〃%d〃,p-data;p=p-next;printf〃\n〃;}〃利用顺序遍历同时用头插法重建单链表
5、程序代码设计如下#includeiostream#includestdio.h#includestdlib.h#define maxsize1000typedef structint data[maxsize];int last;}SeqList;typedef structNode intdata;structNode*next;}Node;void PrintSeqList*L,Node*H;void Chooseintchoice,SeqList*L,Node*H;void CreateOrderSeqList*L;void PrintOrderSeqList*L;void ReverseOrderSeqList*L;void CreateChainNode*H;void PrintChainNode*H;void ReverseChainNode*H;int mainvoidSeqList L;SeqList*p;p=L;L.last=-1;〃初始化Node*H;Node*mallocsizeofNode;H-next=NULL;〃初始化Printp,H;whiletrue printf〃按enter键继续・..;getchar;getchar;system〃cls〃;Printp,H;return0;void PrintSeqList^L,Node*Hint choice;printf〃这是第六组的大作业\n〃;printf〃组员\n〃;printf〃常玲玲马慧钦杨弘扬\n〃;printff瞿霞军梅春艳付月\n〃;printf〃-----------------------------------\n〃;printf〃题目线性表的逆置\n〃;printf〃问题描述\n〃;printf〃利用线性表原有的存储空间将线性表\n〃;printf〃al,a2,an-l,an\n〃;printf〃逆置为\n〃;printf〃an,an-1,•••,a2,al\n〃;printf〃\n〃;printf〃
1.建立新单链表\n〃;printf〃
2.打印当前单链表\n〃;printf〃3,将单链表逆置\n\n〃;printf〃
4.建立新顺序表\n〃;printf,z
5.打印当前顺序表\n〃;printf〃
6.将顺序表逆置\n\n〃;printf z,
7.按其它任意键退出\n〃;printf〃\n〃;printf〃请选择你要的操作〃;scanf〃%d〃,fechoice;Choosechoice,L,H;void Chooseintchoice,SeqList*L,Node*HswitchchoiceCreateOrderL;break;PrintOrder L;break;ReverseOrder L;break;CreateChainH;break;PrintChain H;break;ReverseChain II;break;default:exit0;void CreateOrderSeqList*Lint n;int i;while1printf〃请输入顺序表长度:〃;scanf〃%d〃,n;ifn0break;else printfError顺序表的长度必须大于零!\n〃;}printf〃请输入顺序表元素\n〃;L-last=n-l;fori=0;in;i++scanf/z%d,z,L-data[i];void PrintOrderSeqList*Lint i;ifL-last==-lprintf(〃当前顺序表为空\n〃);。