#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;}