#include<stdio.h>
#include<stdlib.h>
#define initSize 10
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
bool initList(LinkList& L)
{
L = (LNode*)malloc(sizeof(LNode));
if (L == NULL)
return false;
L->next = NULL;
return true;
}
LinkList listHeadInsert(LinkList& L)
{
int data;
L = (LinkList)malloc(sizeof(LNode));
LNode* newNodetemp;
L->next = NULL;
scanf_s("%d", &data);
while (data != 9999)
{
newNodetemp = (LNode*)malloc(sizeof(LNode));
newNodetemp->data = data;
newNodetemp->next = L->next;
L->next = newNodetemp;
scanf_s("%d", &data);
}
return L;
}
LinkList listTailInsert(LinkList& L)
{
int data;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode *newNodetemp,* las = L;
scanf_s("%d", &data);
while (data!=9999)
{
newNodetemp = (LNode*)malloc(sizeof(LNode));
newNodetemp->data = data;
las->next = newNodetemp;
las = newNodetemp;
scanf_s("%d", &data);
}
las->next = NULL;
return L;
}
bool insertPriorNode(LNode* p, int dataIn)
{
if (p == NULL);
return false;
LNode* newNode = (LNode*)malloc(sizeof(LNode));
if (newNode == NULL)
return false;
newNode->next = p->next;
p->next = newNode;
newNode->data = p->data;
p->data = dataIn;
return true;
}
bool insertNextNode(LNode* p, int dataIn)
{
if (p == NULL);
return false;
LNode* newNode = (LNode*)malloc(sizeof(LNode));
if (newNode == NULL)
return false;
newNode->data = dataIn;
newNode->next = p->next;
p->next = newNode;
return true;
}
bool listInsert(LinkList& L, int i, int dataIn)
{
if (i < 1)
return false;
#ifdef NO_HEAD_NODE
if (i == 1)
{
LNode* newNode = (LNode*)malloc(sizeof(LNode));
if (newNode == NULL)
return false;
newNode->data = dataIn;
newNode->next = L;
L = newNode;
return true;
}
#endif
LNode* p;
p = L;
int j = 0;
while (p != NULL && j < i - 1)
{
p = p->next;
j++;
}
insertNextNode(p, dataIn);
return true;
}
bool deleteNode(LNode* p)
{
if (p == NULL)
return false;
LNode* temp = p->next;
p->data = p->next->data;
p->next = temp->next;
free(temp);
return true;
}
bool listDelete(LinkList& L, int i, int& dataDel)
{
if (i < 1)
return false;
LNode* p;
p = L;
int j = 0;
while (p != NULL && j < i - 1)
{
p = p->next;
j++;
}
if (p == NULL)
return false;
if(p->next==NULL)
return false;
LNode* temp = p->next;
dataDel = temp->data;
p->next = temp->next;
free(temp);
return true;
}
int main()
{
LinkList L;
initList(L);
listHeadInsert(L);
int dataD;
listDelete(L, 1, dataD);
for (int i = 0; i < 3; i++)
{
printf("%d\n",L->next->data);
L=L->next;
}
return 0;
}