#include <iostream>
using namespace std;
typedef int ElemType;
typedef bool Status;
typedef struct LNode {
ElemType data;
LNode* next;
}LNode,*LinkList;
Status init(LinkList &L) {
L = new LNode;
L->next = NULL;
return true;
}
Status insert(LinkList &L) {
LinkList p=L;
int i = 0;
int data;
cout << "输入插入位置:\n";
cin >> i;
for (int j = 1; j < i && p; j++) {
p = p->next;
}
cout << "输入要插入的值:\n";
cin >> data;
LinkList s = new LNode;
s->data = data;
s->next = p->next;
p->next = s;
return true;
}
Status remove(LinkList& L) {
int i;
cout << "输入要删除的位置:\n";
cin >>i;
LinkList p = L;
for (int j = 1; j < i && p; j++) {
p = p->next;
}
LinkList q = p->next;//保存删除的节点位置以便释放空间
p->next = p->next->next;
delete q;
return true;
}
Status select(LinkList &L) {
LinkList q = L->next;
cout << "\n所有元素:\n";
while (q) {
cout << q->data<<"\t";
q = q->next;
}
int i;
cout << "\n输入要查询的值:\n";
cin >> i;
LinkList p = L;
while(p&&p->data!=i) {
p = p->next;
}
if (p!=NULL) {
cout << "值:" << i << "查询成功,地址:" << p << endl;
}
else {
cout << "!!!未找到该值!!!";
}
return true;
}
Status update(LinkList& L) {
int data,i;
cout << "输入要修改的位置:\n";
cin >> i;
LinkList p = L;
for (int j = 1; j <= i; j++) {
p = p->next;
}
cout << "输入修改后的值:\n";
cin >> data;
cout << p->data << "-->";
p->data = data;
cout << p->data<<endl;
return true;
}
int main() {
LinkList L;//一个结构体指针变量L,作为链表的头指针
init(L);
while (true)
{
cout << "请选择需要进行的操作\n0.退出\t1.插入\t2.查询\t3.删除\t4.修改\t\n";
int choice;
cin >> choice;
if (choice == 0)
{
break;
}
switch (choice)
{
case 1:insert(L); break;
case 2:select(L); break;
case 3:remove(L); break;
case 4:update(L); break;
default:break;
}
}
}
数据结构(c语言)单链表标准实现
最新推荐文章于 2021-08-15 11:07:36 发布