单链表的表示和实现

作者在 2008-10-12 10:54:44 发布以下内容
  顺序存储结构的弱点:在作插入或删除操作时,需移动大量元素
  链式存储结构没有顺序存储结构所具有的弱点,但同时也失去了顺序表可随机存取的优点。
1.单链表的存储实现 
 typedfed struct LNode
{elemtype data;
 struct LNode *next;
}LNode,*linklist;      //linklist为线性表的类型
2.单链表的新建、插入、删除
 (1)单链表的建立(头插法
 // - - - - - - 头插法 - - - - - - -
linklsit Creat(linklist &L)           // 逆位序输入n个元素的值,建立带表头结点的单链线性表L
{int node;linklist p;
 L=(elemtype)malloc(sizeof(LNode));
 L->next=NULL;                       //建立带头节点的空链表
 while(node!=0)
 {p=(elemtype)malloc(sizeof(LNode)); //生成新节点
  scanf("%6d",&node);               //输入元素,以零结束
  node=p->data;
  p->next=L->next;                  
  L-next=p;}                         //插入表头
}
 // - - - - - - 尾插法 - - - - - - -
linklsit Creat(linklist &L)
{int node;linklist p,q;
 q=L;                                //q始终指向尾结点
 L=(elemtype)malloc(sizeof(LNode));
 L->next=NULL;                       //建立带头节点的空链表
 while(node!=0)
 {p=(elemtype)malloc(sizeof(LNode)); //生成新节点
  scanf("%6d",&node);               //输入元素,以零结束
  node=p->data;
  q->next=p;                          //插入q后面
  q=p;
  q->next=NULL;
}
 (2)在第i个元素前插入元素e
linklist Insert(linklist &L,int i,elentype x)
{int j;linklist p,s;
 p=L;j=0;
 while(p!=NULL&&j<i)
 {p=p->next;j++;}                        //寻找第i-1个节点
  if(p==NULL||j>=i)        
  return ERROR;
  else{s=(elemtype)malloc(sizeof(LNode);) //生成新结点
       s->data=x;                        
       s->next=p->next;                    
       p->next=s;}                        //插入元素x
 return L;
 }
 (3)单链表删除第i个元素
liklsit delete(linklist &L,int i, elemtype &x)
{int j;liklsit p,q;
 j=0;p=L;
 while(p->next!=NULL&&j<i);
 {p=p->next;j++;}           //找到第i-1个元素
 if(p->next==NULL||j>=i)   
 return ERROR;
 else{q=p->next;           //删除第i个元素
      p->next=q->next;
      x=q->data;
      free(q);}
 return L;}
3.函数Getelem
Getelem(linklist L,int i,elemtype &e)
{int j;linklist p;
 j=1;p=L->next;
 while(p==NULL&&j<i)
 {p=p->next;j++;}               //顺指针找,直到p为空或第i个元素不存在
 if(p!=NULL||j>i)rerurn ERROR;  //第i个元素不存在
 e=p->data;}                    //取第i个元素
数据结构 | 阅读 3287 次
文章评论,共1条
Alexy(作者)
2008-10-12 11:23
1
参考<br />
http://www.bccn.net/Article/kfyy/sjjg/200411/236.html
游客请输入验证码
浏览77682次