链表插入和删除
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int id;
struct Node* pNext;
}List;
List* GetNode(int id)
{
List* pTemp = (List*)malloc(sizeof(List));
pTemp->id = id;
pTemp->pNext = NULL;
return pTemp;
}
void AddNode(List** ppHead, List** ppEnd, List* pNode)
{
if (*ppHead == NULL)
{
*ppHead = pNode;
}
else
{
(*ppEnd)->pNext = pNode;
}
*ppEnd = pNode;
}
void InsertNode(List** ppHead,List** ppEnd,List* pNode,int id)
{
List* pMark = *ppHead;
if (id == (*ppHead)->id)
{
pNode->pNext = *ppHead;
*ppHead = pNode;
}
while (pMark->pNext!=NULL)
{
if (pMark->pNext->id == id)
{
pNode->pNext = pMark->pNext;
pMark->pNext = pNode;
return;
}
pMark = pMark->pNext;
}
(*ppEnd)->pNext = pNode;
*ppEnd = pNode;
}
void DeleteNode(List** ppHead,List** ppEnd,int id)
{
List* pDel = NULL;
List* pMark = *ppHead;
if (id == (*ppHead)->id)
{
pDel = *ppHead;
*ppHead = (*ppHead)->pNext;
free(pDel);
pDel = NULL;
return;
}
while (pMark->pNext != NULL)
{
if (pMark->pNext->id == id)
{
pDel = pMark->pNext;
pMark->pNext = pMark->pNext->pNext;
free(pDel);
pDel = NULL;
if (pMark->pNext == NULL)
{
*ppEnd = pMark;
}
return;
}
pMark = pMark->pNext;
}
}
int main()
{
List* pHead = NULL;
List* pEnd = NULL;
AddNode(&pHead, &pEnd, GetNode(1));
AddNode(&pHead, &pEnd, GetNode(2));
AddNode(&pHead, &pEnd, GetNode(3));
AddNode(&pHead, &pEnd, GetNode(4));
DeleteNode(&pHead, &pEnd, 4);
while (pHead != NULL)
{
printf("%d\n",pHead->id);
pHead = pHead->pNext;
}
return 0;
}
随机数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
printf("%d\n", rand()%12);
printf("%d\n", rand()%11+12);
printf("%d\n", rand()%11+23);
printf("%d\n", rand()%17);
return 0;
}