码迷,mamicode.com
首页 > 其他好文 > 详细

线性表插入、删除实现

时间:2014-11-19 18:25:41      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

  1 ////////////////////////////////////////////
  2 // sequencelist.cpp
  3 //
  4 // author:Leetao
  5 ////////////////////////////////////////////
  6 // 简介:
  7 //   线性表的实现
  8 ////////////////////////////////////////////
  9 /**
 10 * 线性表初始化,插入,删除功能的实现
 11 *
 12 * @author Leetao
 13 * @version 1.0
 14 * @date 2014.11.18  
 15 */ 
 16 #include<stdio.h>
 17 #include<malloc.h>
 18 #define LIST_INIT_SIZE 100  //线性表储存空间的初始分配量 
 19 #define LISTINCREMENT 10    //线性表储存空间的分配增量 
 20 
 21 //类型宏定义,定义为int型 
 22 typedef int Status;
 23 typedef int Elem;
 24 
 25 typedef struct
 26 {
 27     Elem *elem;
 28     int length;
 29     int listsize;
 30     
 31 }SqList;
 32 
 33 //线性表初始化 
 34 Status InitList_Sq(SqList &list)
 35 {
 36     int i,n;
 37     printf("Input the length of the sequence list:\n");
 38     scanf("%d",&n);
 39     
 40     
 41     list.elem=(Elem *)malloc(LIST_INIT_SIZE*sizeof(Elem));
 42     if(list.elem==NULL)
 43     {
 44         printf("error!\n");
 45     }
 46     
 47     list.length=0;
 48     list.listsize=LIST_INIT_SIZE;
 49     
 50     printf("Input the data of the sequence list:\n");
 51     
 52     for(i=0;    i<n;    i++)
 53     {
 54         scanf("%d",list.elem+i*sizeof(Elem));
 55         list.length++;
 56     }
 57     
 58     return 0;
 59 }
 60 
 61 //线性表插入 
 62 Status ListInsert_Sq(SqList &list,int i,Elem e)
 63 {
 64     Elem *newbase;
 65     int j;
 66     printf("now we are goint to insert %d at list.elem[%d]\n",e,i-1);
 67     if(i<1||i>(list.length+1))
 68     {
 69         printf("illegal index!\n"); 
 70     }
 71     
 72     if(list.length>=list.listsize)
 73     {
 74         newbase=(Elem *)realloc(list.elem,
 75          (list.listsize+LISTINCREMENT)*sizeof(Elem));
 76          
 77          if(newbase==NULL)
 78          {
 79              printf("error!\n");
 80          }
 81          
 82          list.elem=newbase;
 83          list.listsize+=LISTINCREMENT;
 84     }
 85     
 86     for(j=list.length-1;    j>=i-1;        j--)
 87     {
 88     
 89         *(list.elem+(j+1)*sizeof(Elem))=*(list.elem+j*sizeof(Elem));
 90         
 91         
 92     }    *(list.elem+(i-1)*sizeof(Elem))=e;
 93         list.length++;    
 94         
 95 
 96     return 0;
 97 } 
 98 
 99 //线性表删除
100 Status ListDelete_Sq(SqList &list,int i)
101 {
102     int j;
103     Elem e;
104     
105     if(i<1||i>list.length)
106     {
107         printf("Invalid index!\n");
108     }    
109      
110      e=*(list.elem+(i-1)*sizeof(Elem)); //删除的元素赋值给e 
111     for(j=i-1;    j<list.length;    j++)
112     {
113         *(list.elem+j*sizeof(Elem))=*(list.elem+(j+1)*sizeof(Elem));
114     }
115         --list.length;
116 } 
117 //线性表打印
118 Status PrintList_Sq(SqList &list)
119 {
120     int i;
121     printf("the data of the sequence is :\n\t");
122     
123     for(i=0;    i<list.length;    i++)
124     {
125         printf("%d->",*(list.elem+i*sizeof(Elem)));
126     }
127     
128     printf("NULL\n");
129     
130     return 0;
131 } 
132 
133 int main()
134 {    
135     int in,di;
136     Elem ie;
137     
138     SqList list;
139     InitList_Sq(list);
140     PrintList_Sq(list);
141     
142         //插入
143         printf("Input the position and data you want to insert:\n");
144         scanf("%d%d",&in,&ie); 
145         ListInsert_Sq(list,in,ie);
146         PrintList_Sq(list);
147     
148         //删除 
149         printf("Input the position  you want to delete:\n");
150         scanf("%d",&di); 
151         ListDelete_Sq(list,di);
152         PrintList_Sq(list);
153     
154     return 0;
155 }

插入、删除

线性表插入、删除实现

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/leetao94/p/4108632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!