1 // リストの順序に従って、インサート要素
2の#include <stdio.hの>
3の#include <STDLIB.H>
4の#include < 文字列 .H>
。5
。6は、 ストラクトノード
7 {
8 int型の値、
9 の構造体ノード* 次に;
10 };
11
12は、 空隙 insertNode(構造体ノード**ヘッド、int型の値)
13である {
14 構造体ノード* ;前
15 構造体ノード* 現在、
16 構造体のノード* newnode。
17
18 電流= * ヘッド。
19 前= NULL;
20
21
22 ながら(電流= NULL &&電流- >値<!値)
23 {
24 INT =電流- > B 値。
25 電流=前; // 前记录現在上一个节点的位置
26 電流=電流- > 次。
27 }
28 newnode =(構造体ノード*)はmalloc(はsizeof(構造体ノード)); // メモリ割り当て
29を IF(newNode == NULL)
30 {
31である のprintf(" メモリの割り当てに失敗!" );
32 終了(1 );
33れる }
34である newnode->値= ;値
35 newnode->次に= 現在、
36 IF(前== NULL)
37 {
38である * =ヘッドnewNode;
39 }
40 他
41である {
42れます previous->次= newnode。
43 }
44
45 }
46
47 空隙 printNode(構造体ノード* ヘッド)
48 {
49 構造体ノード* 現在、
50 電流= ヘッド。
51 一方(現在!= NULL)
52 {
53 のprintf(" %d個"、電流- > 値)。
54 電流=電流- > 次。
55 }
56 のprintf("\ n " );
57 }
58
59 空隙 deleteNode(構造体ノード**ヘッド、int型の値)
60 {
61 構造体ノード* 以前、
62 構造体ノード* 現在、
63
64 電流= * ヘッド;
65 前= NULL;
66
67 ながら(電流= NULL &&電流- >値=!値)
68 {
69 =前電流;
70 電流=電流- >次、
71である }
72 IF(現在== NULL)が
73である {
74 のprintf(" ノードが\ N-一致しませんでした" 。)
75 リターン;
76 }
77 他の
78 {
79 IF(前== NULL)
80 {
81 * =電流- 、ヘッド> 次に;
82 }
83 他の
84 {
85 previous-> =>は電流の横次に、
86 }
87 フリー(現在の);
88 }
89 }
90 INT (メイン)
91である {
92 構造体ノードヘッド* = NULL;
93 int型のINPUT;
94 のprintf(" N- \ ...テスト挿入整数を起動" );
95 ながら、(1。)
96 {
97 のprintf(" \整数(-1終わりを示すとn型入力):" );
98 scanfの(" %のD "、および入力);
99 printf(" \ N- " );
100 IF(INPUT == - 1 )
101 {
102 BREAK ;
103 }
104 insertNode(&ヘッド、INPUT);
105 printNode(ヘッド);
106 }
107
108 のprintf(" スタートテスト整数を削除... N- \ " );
109 ながら(1 )
110 {
111 のprintf(" \整数(-1終わりを示すとn型入力):" );
112 scanf関数(" %のD "、および入力)。
113 のprintf(" \ nを" );
114 であれば(入力== - 1 )
115 {
116 ブレーク。
117 }
118 deleteNode(&ヘッド、入力)。
119 printNode(ヘッド)
120 }
121
122 リターン 0 。
123 }
:より転載KHQウインドリバー