链表
#include<iostream> #include<cstring> #include<stdlib.h> using namespace std; typedef struct LNode { int data; struct LNode *next; }Linklist; void creatF(Linklist *&L,int a[],int n); void creatR(Linklist *&L,int a[],int n); void creatF(Linklist *&L,int a[],int n) { Linklist *s; int i; L = (Linklist *)malloc(sizeof(Linklist)); L->next = NULL; for (i = 0;i < n;i++) { s = (Linklist *)malloc(sizeof(Linklist)); s->data = a[i]; s->next = L->next; L->next = s; } } void creatR(Linklist *&L,int a[],int n) { Linklist *s,*r; int i; L = (Linklist *)malloc(sizeof(Linklist)); r = L; for (i = 0;i < n;i++) { s = (Linklist *)malloc(sizeof(Linklist)); s->data = a[i]; r->next = s; r = s; } r->next = NULL; }
线性表的基本运算及实现
#include<iostream> #include<cstring> #include<stdlib.h> using namespace std; typedef struct LNode { int data; struct LNode *next; }Linklist; //线性表的基本实现 void InitList(Linklist *&L); void Destory(Linklist *&L); int ListEmpty(Linklist *L); //初始化线性表 void InitList(Linklist *&L) { L = new Linklist; L->next = NULL; } //销毁线性表 void Destory(Linklist *&L) {//释放单链表L所占用的内存空间,逐一解放全部结点的空间 Linklist *p = L, *q = p->next; while (q != NULL) { delete p;//从头结点开始释放 p = q;//获取下一个结点 q = p->next;//指向相对的下一个结点 } delete q;//此时q为NULL,p指向尾结点,释放q } int ListEmpty(Linklist *L) { return (l->next == NULL);//若单链表L没有数据结点,则返回1,否则返回0 }

浙公网安备 33010602011771号