1 #include <iostream>
2 #include <cstring>
3 #include <string>
4 using namespace std;
5 int n;
6 struct LinkList
7 {
8 int value;//数据域
9 struct LinkList *next;//指针域
10 }*head;
11
12 void init()
13 {
14 cout<<" 线性链表"<<endl;
15 cout<<endl;
16 cout<<" (1)设置线性链表中的元素"<<endl;
17 cout<<endl;
18 cout<<" (2)查找线性链表中的元素"<<endl;
19 cout<<endl;
20 cout<<" (3)删除线性链表中的元素"<<endl;
21 cout<<endl;
22 cout<<" (4)统计线性链表中元素的总数"<<endl;
23 }
24
25 void Add()
26 {
27 cout<<endl;
28 int addNum,addvalue;//元素的个数及数值
29 cout<<" 请输入将要设置链表元素的个数:"<<endl;
30 cout<<endl;
31 cout<<" ";
32 cin>>addNum;
33 cout<<endl;
34 cout<<" 请依次输入将要设置的元素的值:"<<endl;
35 cout<<endl;
36 head=new LinkList;
37 head->next=NULL;
38 struct LinkList *q,*p;
39 p=head;
40 cout<<" ";
41 while(addNum--){
42 q=new LinkList;
43 q->next=NULL;
44 cin>>addvalue;
45 p->value=addvalue;
46 p->next=q;
47 p=q;
48 }
49 cout<<endl;
50 cout<<" 输入完毕 !!!"<<endl;
51 cout<<endl;
52 }
53
54 void Delete()
55 {
56 cout<<endl;
57 struct LinkList *k,*v;
58 k=head;
59 cout<<" 请输入要删除的元素"<<endl;
60 cout<<endl;
61 int deletevalue;
62 cout<<" ";
63 cin>>deletevalue;
64 cout<<endl;
65 while(k->next){
66 if(k->next->value==deletevalue){
67 v=k->next;
68 k->next=v->next;
69 delete v;
70 };
71 k=k->next;
72 }
73 cout<<endl;
74 cout<<" 删除完毕 !!!"<<endl;
75 cout<<endl;
76 }
77
78 void Find()
79 {
80 cout<<endl;
81 struct LinkList *k;
82 k=head;
83 cout<<" 请输入要查找的元素:"<<endl;
84 cout<<endl;
85 int Findvalue;
86 cout<<" ";
87 cin>>Findvalue;
88 cout<<endl;
89 int flag=0;
90 int i=1;
91 while(k->next!=NULL){
92 if(k->value==Findvalue){
93 flag=1;
94 break;
95 }
96 k=k->next;
97 i++;
98 }
99 if(flag){
100 cout<<" 要查找的元素找到了!!!它在第"<<i<<"个位置"<<endl;
101 }else{
102 cout<<" 所查找的值不存在!!!"<<endl;
103 }
104 cout<<endl;
105
106 }
107
108 void Count()
109 {
110 cout<<endl;
111 struct LinkList *k;
112 k=head;
113 int sum=0;
114 while(k->next!=NULL){
115 sum++;
116 k=k->next;
117 }
118 cout<<" 线性链表元素的总数为:"<<sum<<"个"<<endl;
119 cout<<endl;
120 }
121
122 void Put()
123 {
124 struct LinkList *k;
125 k=head;
126 cout<<"线性链表中元素依次为:"<<endl;
127 cout<<endl;
128 cout<<" ";
129 while(k->next!=NULL){
130 cout<<k->value<<" ";
131 k=k->next;
132 }
133 cout<<endl;
134 cout<<endl;
135 }
136
137 int main()
138 {
139 init();
140 while(1){
141 cout<<endl;
142 cout<<" 请按下功能键 ..."<<endl;
143 cout<<endl;
144 cout<<" ";
145 cin>>n;
146 if(n==1) Add();
147 if(n==2) Find();
148 if(n==3) {
149 cout<<endl;
150 cout<<" 删除操作前";
151 Put();
152 Delete();
153 cout<<" 删除操作后";
154 Put();
155 }
156 if(n==4) Count();
157 if(n<1||n>4){
158 cout<<endl;
159 cout<<" 功能键不存在请重新输入!!!"<<endl;
160 cout<<endl;
161 }
162 cout<<" -----------------------"<<endl;
163 cout<<endl;
164 init();
165 }
166 return 0;
167 }