数据结构------线性表的链式表示与实现
不多说直接上代码:
#include"stdafx.h" #include <stdio.h> #include <stdlib.h> /****************************************************************************** /* 数据类型和常量定义 /******************************************************************************/ #define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList; //获取元素 Status GetElem(LinkList L,int i, ElemType &e) { int j = 0; LinkList p = NULL; p = L ->next; while(p && j < i) { ++j; p = p ->next; } if (!p || j > i) return ERROR; e = p ->data; return OK; } //构造线性表 void CreateList(LinkList &L,int n) { printf("input %d intergers",n); LinkList p = NULL; L = new LNode; L ->next = NULL; for (int i = n; i >0 ;--i) { p = new LNode; scanf("%d",&p ->data); p->next = L->next; L ->next = p; } } //在线性表中插入元素 Status ListInsert(LinkList &L,int i,ElemType e) { //在带头结点的单链线性表L中第i个位置之前插入元素e LinkList p = NULL; LinkList s = NULL; p = L; int j = 0; while (p && j < i - 1) { p = p ->next; ++j; } if (!p || j > i - 1) { return ERROR; } s = new LNode; s -> data = e; s -> next = p->next; p -> next = s; //delete(p); //L与P同根连枝 return OK; } //打印线性表 void PrintList(LinkList L) { LinkList p = L->next; while(p) { printf("%d ",p->data); p = p ->next; } } void main() { LinkList L=NULL; ElemType e; CreateList(L, 2); ListInsert(L,1,5); PrintList(L); }