码迷,mamicode.com
首页 > 其他好文 > 详细

单链表练习题

时间:2018-10-05 00:00:04      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:输入   lin   初始   while   个数   依次   ret   oid   col   

输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。

Input

第一行输入数据个数n;

第二行依次输入n个整数;

第三行输入欲删除数据m。

Output

第一行输出原始单链表的长度;

第二行依次输出原始单链表的数据;

第三行输出完成删除后的单链表长度;

第四行依次输出完成删除后的单链表数据。

Sample Input

10

56 25 12 33 66 54 7 12 33 12

12

Sample Output

10

56 25 12 33 66 54 7 12 33 12

7

56 25 33 66 54 7 33

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 typedef struct Lnode{
 4     int data;
 5     struct Lnode *next;
 6 }Lnode,*Link;
 7 int main(void){
 8     Link head,k;
 9     Lnode *p,*q,*t;
10     int n,i,x,m;
11     while(scanf("%d",&n)!=EOF){
12     m=n;
13     head=(Link)malloc(sizeof(Lnode));
14     head->next=NULL;
15     t=head;
16      for(i=0;i<n;i++){    
17          k=(Link)malloc(sizeof(Lnode));
18          scanf("%d",&k->data);
19          k->next=NULL;
20          t->next=k;
21          t=k;
22      }
23     scanf("%d",&x);
24     printf("%d\n",n);
25     p=head->next;    
26     for(i=0;i<n-1;i++){
27         printf("%d ",p->data);
28         p=p->next;
29     } 
30     printf("%d\n",p->data);
31     q=head;
32     p=q->next;
33     for(i=0;i<n;i++){
34         if(x==p->data){
35             q->next=p->next;
36             free(p);
37             m--;
38             p=q->next;
39         }
40         else{
41             q=q->next;
42             p=p->next;
43         }
44     }
45     printf("%d\n",m);
46     head=head->next;
47     for(i=0;i<m-1;i++){
48         printf("%d ",head->data);
49         head=head->next;
50     } 
51     printf("%d\n",head->data);
52 }
53     return 0;    
54 } 

 

单链表练习题

标签:输入   lin   初始   while   个数   依次   ret   oid   col   

原文地址:https://www.cnblogs.com/suqf/p/9743781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!