单链表的创建、取数据、数据添加、数据插入、数据删除

来源:互联网 发布:软件过程模型 编辑:程序博客网 时间:2024/04/30 08:13
#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 0using 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;}


0 0
原创粉丝点击