单链表操作---建表,查找,删除
2014-03-12 01:43
253 查看
数据结构上机测试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<stdlib.h> struct node { int data; struct node *next; }; void del(struct node *head, int key, int n) { int i, count=0; struct node *p, *q; p = head; while(p->next!=NULL) { if(p->next->data == key) { q = p->next; p->next = q->next; free(q); count ++; } else p = p->next; } printf("%d\n", n-count); head = head->next; for(i=0; i<n-count; i++) { printf("%d", head->data); if(i<n-1) printf(" "); else printf("\n"); head = head->next; } } int main() { int n, i, key; struct node *head, *tail, *p, *q; head = (struct node *)malloc(sizeof(struct node)); head->next = NULL; tail = head; q = head; scanf("%d", &n); for(i=0; i<n; i++) { p = (struct node *)malloc(sizeof(struct node)); scanf("%d", &p->data); p->next = NULL; tail->next = p; tail = p; } scanf("%d", &key); printf("%d\n", n);//输出原单链表的长度 //PS:wa了两次,原因没看清要输出原单链表的长度,一定要认真读题啊 q = q->next; for(i=0; i<n; i++)//输出原单链表 { printf("%d", q->data); if(i<n-1) printf(" "); else printf("\n"); q = q->next; } del(head, key, n);//完成删除key值,并输出 return 0; }
相关文章推荐
- 单链表操作---建表,查找,删除
- 001_020 Python 使用Unicode来处理国际化文本
- Android学习之——APP番茄工作法——小结(2)
- 学习OpenCV范例(二)——OpenCV如何扫描图像、利用查找表和计时
- 设计模式之单例
- IOS硬件信息采集汇总
- 我的编程之路
- 设计模式的一点思考
- $(":input").each()和$.each()的区别
- VIM简易操作指南
- HDU 2476 区间dp
- 001_019 Python 检查字符串中的结束字符
- 关于当前搭建Spring Mvc和hibernate框架接口的总结
- 前言和第一章.NET的体系结构
- SQL SERVER中CUME_DIST和PERCENT_RANK函数
- highchars
- Struts2拦截器获取session
- codeforces#235_div2_C Team 简单构造
- codeforces#235_div2_C Team 简单构造
- 【MyGui 3.2.0 开发之一】 编译(OpenGL平台)