赞
踩
1.按位序插入(带头节点)
- typedef struct LNode{
- ElemType data;
- struct LNode *next;
- }LNode *LinkList;//初始化一个单链表(带头节点)
- bool InitList(LinkList &L){
- L=(LNode*)malloc(sizeof(LNode));//头指针指向的节点分配一个头节点(不分配数据)
- if(L == NULL)
- return false;//内存不足,分配失败
- L->next ==NULL;
- return true; //头节点之后暂时还没有节点
- }
- void test(){
- LinkList L;//声明一个指向单链表的指针
- InitList(L);//声明一个空链表
- }
- bool Empty(LinkList L){ntyptedf struct LNode{
- ElemType data;
- struct LNode *next;
- }LNode,*LinkList;//在第i个位置插入元素e(带头节点)
- while(p!=NULL&&j<i-1){//循环找到第i-1个节点
- p=p->next;//p指向下一个节点
- j++;
- }
- if(p==NULL)
- return false;//p值不合法
- LNode *s=(LNode *)malloc(sizeof(LNode));
- s->data=e;
- s->next=p->next;
- p->next=s;//将节点s连接到p
- return true;}
- if(L->next=NULL)
- return true;
- else
- return false;}//判断单链表是否为空(带头节点)
2.按位序插入(不带头节点)
- typedef struct LNode{
- ElemType data;
- struct LNode *next;
- }LNode,*LinkList;//初始化一个单链表
- bool ListInsert(LinkList &L,int i,ElemType e){
- if(i<1)
- return false;//插入到第一个位置时的操作有所不同
- if(i==1){
- LNode *s=(LNode *malloc(sizeof(LNode));
- s->data=e;
- s->next=L;
- L=s;//头指针指向新节点
- return true;
- }
- //i>1的情况与带头节点的相同,唯一的区别是j的初始值为1
- LNode *p;//指针P指向当前扫描到的节点
- int j=1;
- p=L; //L指向头节点,头节点是第0个节点,不存放数据
- //循环找到第i-1个节点
- while(p!=NULL&&j<i-1)
- p=p->next;//p指向下一个节点
- j++;
- }
- if(p=NULL)
- return false;//i的值不合法
- //在第i-1个节点后插入新节点
- LNode *s=(LNode *s)malloc(sizeof(LNode));//申请一个新节点
- s->data=e;
- s->next=p->next;
- p->next=s;
- return true;}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。