#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include<cstdlib>
#include <time.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
using namespace std;
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node* Next;
}Node;
typedef struct Node* LinkList;
//头插法建立单链表
void CreateListHead(LinkList *L, int n)
{
LinkList p;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
(*L)->Next = NULL;
for (int i = 0; i < n; i++)
{
p = (LinkList)malloc(sizeof(Node));
p->data = rand() % 100 + 1;//零到一百的自然数
p->Next = (*L)->Next;
(*L)->Next = p;
}
}
//尾插法建立单链表
void CreateListTail(LinkList *L, int n)
{
LinkList p, r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof (Node));
for (int i = 0; i < n; i++)
{
p = (Node *)malloc(sizeof(Node));
p->data = rand() % 100 + 1;
r->Next = p;
r = p;
}
}
//用e返回单链表L第i个元素
ElemType GetElem(LinkList L, int i, ElemType*e)
{
int j;
LinkList p=L->Next;
j = 1;
//查找第i个元素
while (p&&j<i)
{
p = p->Next;
++j;
}
if (!p || j > i)
{
return ERROR;
}
*e = p->data;
return OK;
}
//单链表元素的插入
ElemType ListInsert(LinkList *L, int i, ElemType e)
{
int j;
LinkList p, s;
p = *L;
j = 1;
//查找第i个元素
while (p&&j<i)
{
p = p->Next;
j++;
}
if (!p||j>i)
{
return ERROR;
}
s = (LinkList)malloc(sizeof(Node));
s->data = e;
s->Next = p->Next;
p->Next = s;
return OK;
}
//单链表元素的删除
ElemType ListDelete(LinkList *L, int i, ElemType *e)
{
int j;
LinkList p = *L;
j = 1;
while (p->Next&&j < i)
{
p = p->Next;
j++;
}
//找不到元素或者到了表尾
if (!(p->Next)&&j>i )
{
return ERROR;
}
p = p->Next->Next;
*e = p->Next->data;
free(p->Next);
return OK;
}
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstdio>#include<cstdlib>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0using namespace std;typedef int ElemType;typedef struct Node{ElemType data;struct Node* Next;}Node;typedef struct Node* LinkList;//用e返回单链表L第i个元素ElemType GetElem(LinkList L, int i, ElemType*e){int j;LinkList p=L->Next;j = 1;//查找第i个元素while (p&&j<i){p = p->Next;++j;}if (!p || j > i){return ERROR;}*e = p->data;return OK;}//单链表元素的插入ElemType ListInsert(LinkList *L, int i, ElemType e){int j;LinkList p, s;p = *L;j = 1;//查找第i个元素while (p&&j<i) {p = p->Next;j++;}if (!p||j>i){return ERROR;}s = (LinkList)malloc(sizeof(Node));s->data = e;s->Next = p->Next;p->Next = s;return OK;}//单链表元素的删除ElemType ListDelete(LinkList *L, int i, ElemType *e){int j;LinkList p = *L;j = 1;while (p->Next&&j < i){p = p->Next;j++;}//找不到元素或者到了表尾if (!(p->Next)&&j>i ){return ERROR;}p = p->Next->Next;*e = p->Next->data;free(p->Next);return OK;}