2022年双向链表实现数据添加删除分享 .pdf
福州大学至诚学院ACM 队利用双向链表实现头添加,头删除,尾添加,尾删除,以及输出功能。#include stdio.h #include stdlib.h typedef struct nod struct nod *prior; int data; struct nod *next; node; node *head=new node; void addfirst(int s) / 头添加函数 node* currnode=new node; currnode-data=s; currnode-next=0; if(head-next=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; return temp; int addlast(int s) / 尾添加 node *temp,*currnode=new node; temp=move(); currnode-data=s; temp-next=currnode; currnode-next=0; currnode-prior=temp; return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 福州大学至诚学院ACM 队 void delfirst() / 头删除 if(head-next-next=0) head-next-prior=0; head-next=0; else head-next=head-next-next; head-next-prior=head; void dellast() / 尾删除 node *temp; temp=move(); temp-prior-next=0; temp-prior=0; void output() / 输出链表内的数据 node* temp=head; while(temp-next) printf(%d ,temp-next-data); temp=temp-next; printf(n); int main() int n,m,num,i; head-next=0; printf( 请输入您即将添加的数字个数:n); scanf(%d,&n); printf( 请输入您要添加的数字:n); while(n-) scanf(%d,&num); addlast(num); system(cls); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 福州大学至诚学院ACM 队printf( 您输入的数字为:n); output(); while(1) printf( 请输入序号选择您想要的操作:n); printf(1. 头添加 n2.尾添加 n3. 头删除 n4.尾删除 n5. 退出程序 n); scanf(%d,&m); if(m=1) printf( 请输入您即将添加的数字个数:n); scanf(%d,&n); printf( 请输入您要添加的数字:n); while(n-) scanf(%d,&num); addfirst(num); if (m=2) printf( 请输入您即将添加的数字个数:n); scanf(%d,&n); printf( 请输入您要添加的数字:n); while(n-) scanf(%d,&num); addlast(num); if (m=3) delfirst(); if (m=4) dellast(); if (m=5) break; system(cls); printf( 您输入的数字为:n); output(); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -