Description
这个链表共有五种操作
Input
loc 为正数,x为一整型数,
"insert loc x"表示将整数x插入链表作为链表第loc个数据
"erase loc"表示删除链表的第loc个数据(测试数据保证loc小于链表的结点总数)
"output"表示输出链表所有的数据,数据间用空格隔开
"find x"表示在链表中查找值为x的数据,若查找到则输出"hava found",没找到输出"not found"
"end"表示程序结束
"insert loc x"表示将整数x插入链表作为链表第loc个数据
"erase loc"表示删除链表的第loc个数据(测试数据保证loc小于链表的结点总数)
"output"表示输出链表所有的数据,数据间用空格隔开
"find x"表示在链表中查找值为x的数据,若查找到则输出"hava found",没找到输出"not found"
"end"表示程序结束
Output
按要求输出
Sample Input
insert 1 2 insert 2 6 insert 3 5 find 6 output erase 2 find 6 output insert 3 10 output insert 2 11 output end
Sample Output
have found
2 6 5
not found
2 5
2 5 10
2 11 5 10
View Code
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 typedef struct node
5 {
6 int data;
7 struct node *next;
8 }pao;
9 pao *put_linklist( pao *H )
10 {
11 pao *r;
12 r = H;
13 while( r -> next -> next != NULL )
14 {
15 printf( "%d ",r -> next -> data );
16 r = r -> next;
17 }
18 printf( "%d ", r -> next -> data );
19 puts( "" );
20
21 }
22 pao *get_linklist( pao *H, int i )
23 {
24 pao *p = H;
25 int j = 0;
26 while( p -> next != NULL&& j<i )
27 {
28 p = p->next;
29 j++;
30 }
31 if( j == i )
32 return p;
33 else
34 return NULL;
35 }
36 pao *insert( pao *H )
37 {
38 pao *p, *s;
39 int i, x;
40 scanf( "%d%d", &i, &x );
41 p = get_linklist( H, i-1 );
42 if( p == NULL )
43 {
44 H -> data = x;
45 }
46 else
47 {
48 s = (pao *)malloc(sizeof(pao));
49 s->data = x;
50 s -> next = p -> next;
51 p -> next = s;
52 }
53 }
54 pao *find( pao *H )
55 {
56 int x;
57 scanf( "%d", &x );
58 pao *p = H-> next;
59 while( p!=NULL && p -> data != x )
60 {
61 p = p -> next;
62 }
63 if( p )
64 printf( "have found \n" );
65 else
66 printf( "not found \n" );
67 }
68 pao *del( pao *H )
69 {
70 int i;
71 scanf( "%d", &i );
72 pao *p, *s;
73 p = get_linklist( H, i-1 );
74 if( p != NULL )
75 {
76 if( p -> next != NULL )
77 {
78 s = p->next;
79 p->next = s -> next;
80 free(s);
81 }
82 }
83
84 }
85 int main()
86 {
87 char str[8];
88 pao *H;
89 H = (pao *)malloc(sizeof(pao));
90 H->next = NULL;
91 while( scanf( "%s", str ) == 1 )
92 {
93 if( strcmp( "insert", str ) == 0 )
94 insert( H );
95 else if( strcmp( "output", str )== 0 )
96 put_linklist( H );
97 else if( strcmp( "find", str) == 0 )
98 find( H );
99 else if( strcmp( "erase", str) == 0 )
100 del( H );
101 else if( strcmp( "end", str ) == 0 )
102 exit(1);
103 }
104 }