逆转线性表

上传人:lis****210 文档编号:168287967 上传时间:2022-11-09 格式:DOCX 页数:4 大小:20.41KB
返回 下载 相关 举报
逆转线性表_第1页
第1页 / 共4页
逆转线性表_第2页
第2页 / 共4页
逆转线性表_第3页
第3页 / 共4页
点击查看更多>>
资源描述
作业题目:逆转线性表数据结构描述:采用数据的链式存储算法描述:,创建head指针对线性表进行链式存储。先判断是否为空链表或是单节点链表, 若是则不需做任何操作,算法结束;若为两节点链表,直接将两节点前后件关系逆转,并将 head指针指向新的前件,算法结束;若节点数大于或等于3,初始状态:新建两个指针p,q, 并将p指向原链表第二个节点,q指向第三个节点,这样head,p,q三个指针所指向的三个节 点依次相邻,将头两个节点之间前后件关系逆转,即将第二个指针指向第一个指针所指地址, 而后将第一个指针指向第三个指针指向的节点的后件的地址。如此循环操作直至head,p,q中 的某一个指针指向末尾节点为止。此时三个指针依次指向最后三个节点。将此时最后两个前 后件关系逆转,即将最后第二位的指针指向最后第三个指针指向的地址,又将最后一个指针 指向最后第二个指针指向的地址。最后把 head 指针指向最后一个指针指向的地址。算法结 束;最后把head指针保存的线性表顺序输出。对链表的一次逆转操作(以head,p,q指针顺序为例):-T9headP99.pqhead对线性链表最后三个节点前后件关系的逆转(以最后三个节点为head,p,q指针顺序为例): 99headhead程序:#include #include struct node int d;struct node *next;/创建全局变量指针 head/建立空链表;struct node *head; void List() head=NULL; void ins_List() int x;struct node *q;scanf(“%d”,&x);q=malloc(sizeof(struct node*);q-next=head;q-d=x;head=q;/在链头插入元素 xvoid ch_List()struct node *p,*q;if(head=NULL|head-next=NULL) return;/空链表或者单节点链表时逆转不用操作if(head-next-next=NULL)p=head-next;head-next=NULL;p-next=head;head=p;return;/两节点列表时逆转操作p=head-next;q=p-next; while(p-next!=NULL&q-next!=NULL&head-next!=NULL) if(head-next=p&p-next=q)p-next=head;head=q-next;if(p-next=q&q-next=head)q-next=p;p=head-next;if(q-next=head&head-next=p)head-next=q;q=p-next;if(head-next=p&p-next=q)p-next=head;q-next=p;head=q;return;if(p-next=q&q-next=head)q-next=p;head-next=q;return;if(q-next=head&head-next=p)head-=q;p-next=head;head=p;return;/ 逆转线性表的函数void prt_List()struct node *p; p=head;while(p!=NULL) printf(“%d n ”,p-d) p=p-next; int main(void) int i,n;List(); scanf(“%d”,&n); for(i=1;i=n;i+) ins_List(); ch_List(); prt_List();return 0; 验证算法的实例及其运算结果:/顺序输出线性链表/建立空链表/确定链表长度/将线性表已链表形式存储 /逆转线性表操作 /将逆转后的线性表顺序输出5 /n=554321/实际链表为 1,2,3,4,5理论输出:54321实际输出:死循环,无输出值,自己未能找到程序中的错误。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!