1、单链表的节点描述
#include <stdio.h>
#define ElemType int
typedef struct LNode{
ElemType data;
LNode *next;
}LNode, *LinkList;
2、单链表的基本操作
1)头插法建立链表
LinkList List_HeadInsert(LinkList &L){
L=(LinkList)malloc(sizeof(LNode));
L->next = NULL;
ElemType x = 1;
LNode *s;
while(x!=10){
s = (LNode*)malloc(sizeof(LNode));
s->next = L->next;
L->next = s;
s->data = x;
x++;
}
return L;
}
2)尾插法建立链表
LinkList List_RearInsert(LinkList &L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int x = 0;
LNode *s,*r = L;
while(x!=10){
s=(LNode*)malloc(sizeof(LNode));
r->next = s;
r = s;
s->data = x;
x++;
}
return L;
}
3)按序号查找值
LNode *GetElem(LinkList L,int i){
int j = 1;
LNode *p = L;
if(i==0) return L;
if(i<0) return NULL;
while(p&&j<i){
p=p->next;
j++;
}
return p;
}
4)按值查找表
LNode *LocateElem(LinkList L, ElemType e){
LNode *p;
p = L->next;
while(p&&p->data!=e)
p = p->next;
return p;
}
5)插入节点操作
LNode *s = (LNode*)malloc(sizeof(LNode));
s->next = q->next;
q->next = s;
s->data = e;
6)删除节点操作
s = Node;
p->next = s->next;
free(s);
3、双链表的基本操作
1)节点定义
typedef struct DNode{
ElemType data;
DNode *prior;
DNode *next;
}DNode, *DLinkList;
2)插入节点
s->next = p->next;
p->next->prior = s;
s->prior = p;
p->next = s;
3)删除节点
p->next = s->next;
s->nxet-prior = p;
free(s);
3、静态链表
结构
#define Maxsize 50
typedef struct{
ElemType data;
int next;
}SLinkList[Maxsize];
总结
#include <iostream>
using namespace std;
#define ElemType int
typedef struct LNode{
ElemType data;
LNode *next;
}LNode, *LinkList;
LinkList List_HeadInsert(LinkList &L){
L=(LinkList)malloc(sizeof(LNode));
L->next = NULL;
ElemType x = 1;
LNode *s;
while(x!=10){
s = (LNode*)malloc(sizeof(LNode));
s->next = L->next;
L->next = s;
s->data = x;
x++;
}
return L;
}
LinkList List_RearInsert(LinkList &L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int x = 0;
LNode *s,*r = L;
while(x!=10){
s=(LNode*)malloc(sizeof(LNode));
r->next = s;
r = s;
s->data = x;
x++;
}
return L;
}
LNode *GetElem(LinkList L,int i){
int j = 1;
LNode *p = L;
if(i==0) return L;
if(i<0) return NULL;
while(p&&j<i){
p=p->next;
j++;
}
return p;
}
LNode *LocateElem(LinkList L, ElemType e){
LNode *p;
p = L->next;
while(p&&p->data!=e)
p = p->next;
return p;
}
typedef struct DNode{
ElemType data;
DNode *prior;
DNode *next;
}DNode, *DLinkList;
#define Maxsize 50
typedef struct{
ElemType data;
int next;
}SLinkList[Maxsize];
int main()
{
cout << "Hello World";
return 0;
}