加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据结构 linklist.cpp (链表)

(2009-10-16 16:44:30)
标签:

杂谈

分类: 数据结构

#include <iostream.h>
//#include<stdio.h>
#include <stdlib.h>
 typedef struct  LNode {
      int      data;  // 数据域
      struct LNode   *next;  // 指针域
   } LNode, *LinkList; 
 LinkList  L;  // L 为单链表的头指针
void CreateList_L(LinkList &L, int n) { // 逆序输入 n 个数据元素,建立带头结点的单链表
  LNode *p;
  L = (LinkList) malloc (sizeof (LNode));
     L->next = NULL;    // 先建立一个带头结点的单链表
     for (int i = n; i > 0; --i) {
       p = (LinkList) malloc (sizeof (LNode));
       cin>>p->data;    // 输入元素值
       p->next = L->next; L->next = p;  // 插入
  }
}
 int ListInsert_L(LinkList L, int i, int e) {
     // L 为带头结点的单链表的头指针,本算法
     // 在链表中第i 个结点之前插入新的元素 e
      LNode *p;
   LNode *s;
   int j;
    p = L;    j = 0;
    while (p && j < i-1)
 { p = p->next;  ++j; }   // 寻找第 i-1 个结点
    if (!p || j > i-1)
          return 0;      // i 大于表长或者小于1
    s = (LinkList) malloc ( sizeof (LNode));
                               // 生成新结点
    s->data = e;
    s->next = p->next;      p->next = s; // 插入
    return 1;
 }

int ListDelete_L(LinkList L, int i, int &e) {
   // 删除以 L 为头指针(带头结点)的单链表中第 i 个结点
  LNode *p;
   LNode *q;
  int j;
  p = L;    j = 0;
     while (p->next && j < i-1) {  p = p->next;   ++j; }
                           // 寻找第 i 个结点,并令 p 指向其前趋
     if  (!(p->next) || j > i-1)
              return 0;  // 删除位置不合理
      q = p->next;   p->next = q->next;  // 删除并释放结点
      e = q->data;   free(q);
      return 1;
 }
void main()
{
  LinkList LL;
  LNode *p;
  int n,e,i;
  cout<<"建立的链表需要的结点个数是"<<endl;
  cin>>n;
  cout<<endl;
  CreateList_L(LL, n);
  cout<<"需要的插入位置是"<<endl;
  cin>>i;
  ListInsert_L(LL, i, 10);
  p=LL->next;
  cout<<endl<<" after insert"<<endl;
  while(p)
  {
   cout<<"   "<<p->data<<"   ";
   p=p->next;
  }
  cout<<"需要的删除位置是"<<endl;
  cin>>i;
  ListDelete_L(LL,i, e);
  cout<<endl<<" after delete"<<endl;
  p=LL->next;
  while(p)
  {
   cout<<"   "<<p->data<<"   ";
   p=p->next;
  }
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有