欢迎来到天天文库
浏览记录
ID:40912980
大小:15.77 KB
页数:3页
时间:2019-08-10
《双向链表实现数据添加删除》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、福州大学至诚学院ACM队利用双向链表实现头添加,头删除,尾添加,尾删除,以及输出功能。#include"stdio.h"#include"stdlib.h"typedefstructnod{structnod*prior;intdata;structnod*next;}node;node*head=newnode;voidaddfirst(ints)//头添加函数{node*currnode=newnode;currnode->data=s;currnode->next=0;if(head->nex
2、t==0){head->next=currnode;currnode->prior=head;}else{currnode->next=head->next;currnode->prior=head;head->next->prior=currnode;head->next=currnode;}}node*move()//将指针指向链表末尾{node*temp=head;while(temp->next)temp=temp->next;returntemp;}intaddlast(ints)//尾添
3、加{node*temp,*currnode=newnode;temp=move();currnode->data=s;temp->next=currnode;currnode->next=0;currnode->prior=temp;return0;福州大学至诚学院ACM队}voiddelfirst()//头删除{if(head->next->next==0){head->next->prior=0;head->next=0;}else{head->next=head->next->next;hea
4、d->next->prior=head;}}voiddellast()//尾删除{node*temp;temp=move();temp->prior->next=0;temp->prior=0;}voidoutput()//输出链表内的数据{node*temp=head;while(temp->next){printf("%d",temp->next->data);temp=temp->next;}printf("");}intmain(){intn,m,num,i;head->next=0;p
5、rintf("请输入您即将添加的数字个数:");scanf("%d",&n);printf("请输入您要添加的数字:");while(n--){scanf("%d",&num);addlast(num);}system("cls");福州大学至诚学院ACM队printf("您输入的数字为:");output();while(1){printf("请输入序号选择您想要的操作:");printf("1.头添加2.尾添加3.头删除4.尾删除5.退出程序");scanf(
6、"%d",&m);if(m==1){printf("请输入您即将添加的数字个数:");scanf("%d",&n);printf("请输入您要添加的数字:");while(n--){scanf("%d",&num);addfirst(num);}}if(m==2){printf("请输入您即将添加的数字个数:");scanf("%d",&n);printf("请输入您要添加的数字:");while(n--){scanf("%d",&num);addlast(num);}}if(m==
7、3)delfirst();if(m==4)dellast();if(m==5)break;system("cls");printf("您输入的数字为:");output();}return0;}
此文档下载收益归作者所有