#include <iostream>
using namespace std;
typedef struct _NODE
{
int n;
_NODE *next;
}Node,*pNode;
void CreateNodes(pNode *head)
{
cout<<"请输入节点数值,输入0结束:";
int n;
cin>>n;
while(n != 0)
{
pNode node = new Node;
node->n = n;
if(*head == NULL)
{
*head = node;
node->next = NULL;
}
else
{
node->next = (*head);
*head = node;
}
cout<<"请输入下一个节点数值,输入0结束:";
cin>>n;
}
}
void InsertNode(pNode *head,int n,int nIdx)
{
if(*head == NULL)
return;
pNode newNode = new Node;
newNode->n = n;
//
if(nIdx == 0)
{
newNode->next = *head;
*head = newNode;
}
else
{
int i = 1;
pNode node = *head;
while(node != NULL)
{
if(i==nIdx)
{
newNode->next = node->next;
node->next = newNode;
break;
}
node = node->next;
i++;
}
}
}
int FindNode(pNode head,int nIdx)
{
int i = 0;
pNode node = head;
while(node != NULL)
{
if(i==nIdx)
return node->n;
node = node->next;
i++;
}
return 0x7FFFFFFF;
}
void DeleteNode(pNode *head,int nIdx)
{
if(*head == NULL)
return;
if(nIdx == 0)
*head = (*head)->next;
else
{
int i=1;
pNode node = *head;
while(node != NULL)
{
if(i==nIdx)
{
if(node->next != NULL)
node->next = node->next->next;
else
node->next = NULL;
break;
}
node = node->next;
i++;
}
}
}
void PrintNodes(pNode head)
{
if(head == NULL)
return;
pNode node = head;
do
{
cout<<node->n<<" ";
node = node->next;
}while(node != NULL);
cout<<endl;
}
int main()
{
pNode head = NULL;
CreateNodes(&head);
PrintNodes(head);
int n,nIdx;
cout<<"请输入需要插入的数值:";
cin>>n;
cout<<endl;
cout<<"请输入需要插入的位置:";
cin>>nIdx;
cout<<endl;
InsertNode(&head,n,nIdx);
PrintNodes(head);
cout<<"请输入需要删除的位置:";
cin>>nIdx;
cout<<endl;
DeleteNode(&head,nIdx);
PrintNodes(head);
cout<<"请输入需要查询的位置:";
cin>>nIdx;
cout<<endl;
n = FindNode(head,nIdx);
if(n != 0x7FFFFFFF)
cout<<"位置"<<nIdx<<"的数值为"<<n<<endl;
else
cout<<"指定元素不存在。"<<endl;
//
//
return 0;
}
耗时耗力,好用请务必采纳
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632