#include<iostream>
#include<algorithm>
using namespace std;
typedef struct link
{
int data;
struct link* next;
}LINK;
LINK *Push(LINK *link);
LINK* Delete(LINK* link);
LINK* Insert(LINK* link);
void Print(LINK* link);
int main(void)
{
LINK *link=NULL;
int order;
do
{
Print(link);
cout << "输入指令:";
cin >> order;
switch (order)
{
case 1:link=Push(link);
break;
case 2:link=Delete(link);
break;
case 3:link=Insert(link);
}
} while (order != -1);
return 0;
}
LINK *Push(LINK *link) //插入
{
int data;
cout << "输入数据:";
cin >> data;
LINK* node = (LINK*)malloc(sizeof(LINK));
LINK* pr = link;
if (pr == NULL)
link = node;
else
{
while (pr->next != NULL)
pr = pr->next;
pr->next = node;
}
node->data = data;
node->next = NULL;
return link;
}
LINK* Delete(LINK* link) //删除
{
int data;
cout << "输入数据:";
cin >> data;
LINK* temp1 = link, * temp2 = link;
if (link == NULL) return link;
while (temp2->data != data&&temp2->next!=NULL)
{
temp1 = temp2;
temp2 = temp2->next;
}
if (temp2->data == data)
{
if (temp2 == link)
link = link->next;
else
{
temp1->next = temp2->next;
}
free(temp2);
}
return link;
}
LINK* Insert(LINK* link)
{
int data;
cout << "输入数据:";
cin >> data;
LINK* temp1 = link, * temp2 = link;
LINK* node = (LINK*)malloc(sizeof(LINK));
if (link == NULL)
link = node;
else
{
while (temp2->data < data && temp2->next != NULL)
{
temp1 = temp2;
temp2 = temp2->next;
}
if (temp2->data >= data)
{
if (temp2 == link)
{
node->next = link;
link=node;
}
else
{
node->next = temp2;
temp1->next = node;
}
}
else
temp2->next = node;
}
node->data = data;
return link;
}
void Print(LINK* link)
{
LINK* p = link;
while (p != NULL)
{
cout << p->data << ' ';
p = p->next;
}
}
链表添加删除插入代码
于 2023-02-18 19:33:41 首次发布