#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int nVal;
struct Node* pNext;
}List;
void AddNode(List** ppHead, List** ppEnd, int n)
{
List* pTemp = malloc(sizeof(List));
pTemp->nVal = n;
pTemp->pNext = NULL;
if (NULL == *ppHead)
{
*ppHead = pTemp;
}
else
{
(*ppEnd)->pNext = pTemp;
}
*ppEnd = pTemp;
}
List* GetNode(int n)
{
List* pTemp = malloc(sizeof(List));
pTemp->nVal = n;
pTemp->pNext = NULL;
return pTemp;
}
void Print(List* pHead)
{
while (pHead != NULL)
{
printf("%d ", pHead->nVal);
pHead = pHead->pNext;
}
}
void InsertNode(List** ppHead, List** ppEnd, List* pNode, int val)
{
if ((*ppHead)->nVal == val)
{
pNode->pNext = *ppHead;
*ppHead = pNode;
return;
}
List* pMark = *ppHead;
while (pMark != NULL)
{
if (pMark->pNext->nVal == val)
{
pNode->pNext = pMark->pNext;
pMark->pNext = pNode;
return;
}
pMark = pMark->pNext;
}
}
void SearchNode(List** ppHead, List* pHead, int n)
{
List* pMark = *ppHead;
while (pHead != NULL)
{
if (pHead->nVal == n)
{
printf("%d\n", pMark->nVal);
return;
}
pHead = pHead->pNext;
pMark = pMark->pNext;
}
}
void DeleteNode(List** ppHead, List** ppEnd, int val)
{
List* pDel = NULL;
if ((*ppHead)->nVal == val)
{
pDel = *ppHead;
*ppHead = (*ppHead)->pNext;
free(pDel);
pDel = NULL;
return;
}
List* pMark = *ppHead;
while (pMark->pNext != NULL)
{
if (pMark->pNext->nVal == val)
{
pDel = pMark->pNext;
pMark->pNext = pMark->pNext->pNext;
free(pDel);
pDel = NULL;
return;
}
pMark = pMark->pNext;
}
}
int main()
{
List* pHead = NULL;
List* pEnd = NULL;
printf("请输入链表中的元素个数:\n");
int n;
scanf_s("%d", &n);
printf("请输入链表中各元素的值,以空格为间隔:\n");
int a;
for (int i = 0; i < n; i++)
{
scanf_s("%d", &a);
AddNode(&pHead, &pEnd, a);
}
printf("请输入要插入的元素的位置及元素值,以空格为间隔:\n");
int s, x;
scanf_s("%d %d", &s, &x);
InsertNode(&pHead, &pEnd, GetNode(x), s);
printf("插入后的顺序表为:\n");
Print(pHead);
printf("\n");
printf("请输入要删除元素的位置:\n");
int b;
scanf_s("%d", &b);
printf("所删除的元素为:\n");
SearchNode(&pHead, pHead, b);
DeleteNode(&pHead, &pEnd, b);
printf("删除后的顺序表为:\n");
Print(pHead);
}
这个代码是想实现通过输入的位置查找和删除元素,但我目前写的代码是通过元素的值来查找和删除元素,试了几种方法没能改成功,有没有知道怎么改进的帮忙看一下