数据结构上机测试2-1:单链表操作A
2016-07-27 10:08
316 查看
数据结构上机测试2-1:单链表操作A
Time Limit: 1000ms Memory limit: 4096K 有疑问?点这里^_^
题目描述
输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。
输入
第一行输入数据个数n;第二行依次输入n个整数;
第三行输入欲删除数据m。
输出
第一行输出原始单链表的长度;第二行依次输出原始单链表的数据;
第三行输出完成删除后的单链表长度;
第四行依次输出完成删除后的单链表数据。
示例输入
10 56 25 12 33 66 54 7 12 33 12 12
示例输出
10 56 25 12 33 66 54 7 12 33 12 7 56 25 33 66 54 7 33
这道题就是顺序建链表并且删除相同的元素。但是应当注意第一个和最后一个的删除。
#include<stdio.h> #include<iostream> using namespace std; int n; struct node { int d; node *next; }; node *CreatList(int n) //顺序建表 { node *head=new node; head->next=NULL; node *tail=head; for(int i=0;i<n;i++) { node *p=new node ; cin>>p->d; tail->next=p; tail=p; } tail->next=NULL; return head; } node *DeleteList(node *head,int m) //删除相同元素 { node *p=head; node *q=p->next; while(q!=NULL) { if(q->d==m) { p->next=q->next; delete q; n--; } else p=p->next; q=p->next; } return head; } void PrintList(node *head) { node *p=head->next; while(p!=NULL) { if(p->next==NULL) cout<<p->d<<endl; else cout<<p->d<<" "; p=p->next; } } int main() { cin>>n; node *head=NULL; head=CreatList(n); int m; cin>>m; cout<<n<<endl; PrintList(head); head=DeleteList(head,m); cout<<n<<endl; PrintList(head); return 0; }
相关文章推荐
- 顺序表应用1:多余元素删除之移位算法
- SDUT 3363 数据结构实验之图论七:驴友计划
- 数据结构上机测试1:顺序表的应用
- 数据结构实验之查找二:平衡二叉树
- 数据结构实验之查找一:二叉排序树
- POJ 3468 A Simple Problem with Integers (线段树区间修改)
- SDUT3333&&SDUT3332数据结构实验之栈五:下一较大值(一)
- 暑假集训二顺序表-顺序表应用5:有序顺序表归并
- 暑假集训二顺序表-顺序表应用6:有序顺序表查询
- 暑假集训二顺序表-顺序表应用2:多余元素删除之建表算法
- 暑假集训二顺序表-顺序表应用1:多余元素删除之移位算法
- Python机器视觉编程常用数据结构与示例
- 暑假集训二顺序表-顺序表应用3:元素位置互换之移位算法
- 暑假集训第1天链表-数据结构实验之链表七:单链表中重复元素的删除
- 暑假集训第1天链表-数据结构实验之链表三:链表的逆置
- 暑假集训第1天链表-数据结构实验之链表四:单链表的归并
- 暑假集训第1天链表-数据结构实验之链表五:单链表的拆分
- 暑假集训第1天链表-数据结构上机测试2-1:单链表操作A
- 数据结构学习一 数据结构概述及预备知识
- 数据结构学习笔记之用Java实现双向链表