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

数据结构 链表

时间:2016-10-10 14:12:16      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

 具有基本的增删改查功能的链表

打了一中午 可算完事了……

  1 #include<stdio.h>
  2 #include<string.h>
  3 struct _list{
  4     int value;
  5     _list *next;
  6     _list(){
  7         value=0;
  8         next=NULL;
  9     }
 10 };
 11 
 12 int _size(_list *&node){
 13     if(node->next==NULL) return 0;
 14     _list *used=node->next;
 15     int sum=1;
 16     while(true){
 17         if(used->next==NULL) break;
 18         else{
 19             sum++;
 20             used=used->next;
 21         }
 22     }
 23     return sum;
 24 }
 25 
 26 void add(_list *&node,int value){
 27     if(node==NULL){
 28         node=new _list();
 29         node->value=value;
 30         node->next=NULL;
 31     }
 32     else add(node->next,value);
 33 }
 34 
 35 _list *_find(_list *&node,int local){
 36     _list *used=node->next;
 37     int l=1;
 38     while(l<local){
 39         used=used->next;
 40         l++;
 41     }
 42     return used;
 43 }
 44 
 45 int find_value(_list *&node,int value){
 46     if(node->value==value) return 1;
 47     _list *used=node->next;
 48     int l=1;
 49     while(l<_size(node)){
 50         if(used->value==value) break;
 51         used=used->next;
 52         l++;
 53     }
 54     return l;
 55 }
 56 
 57 void _insert(_list *&node,int local,int value){
 58     _list *used=_find(node,local-1);
 59     _list *__list=new _list();
 60     __list->next=_find(node,local)->next;
 61     __list->value=value;
 62     used->next=__list;
 63 }
 64 
 65 void change(_list *&node,int local,int value){
 66     _list *used=_find(node,local);
 67     used->value=value;
 68 }
 69 
 70 void _delete(_list *&node,int local){
 71     _list *_front=_find(node,local-1);
 72     _list *now=_find(node,local);
 73     _front->next=now->next;
 74     delete(now);
 75 }
 76 
 77 void print(_list *&node){
 78     if(node->next==NULL){
 79         printf("default\n");
 80         return ;
 81     }
 82     _list *used=node->next;
 83     printf("%d",used->value);
 84     used=used->next;
 85     while(used!=NULL){
 86         printf(" %d",used->value);
 87         used=used->next;
 88     }
 89     printf("\n");
 90     return ;
 91 }
 92 
 93 int main(){
 94     char act[20];
 95     _list *node=new _list();
 96     while(scanf("%s",act)!=EOF){
 97         if(strcmp(act,"end")==0) break;
 98         else if(strcmp(act,"print")==0) print(node);
 99         else if(strcmp(act,"add")==0){
100             int value;
101             scanf("%d",&value);
102             add(node,value);
103         }
104         else if(strcmp(act,"delete")==0){
105             int local;
106             scanf("%d",&local);
107             _delete(node,local);
108         }
109         else if(strcmp(act,"size")==0){
110             printf("%d\n",_size(node));
111         }
112         else if(strcmp(act,"Insert")==0){
113             int local,value;
114             scanf("%d%d",&local,&value);
115             _insert(node,local,value);
116         }
117         else if(strcmp(act,"change")==0){
118             int local,value;
119             scanf("%d%d",&local,&value);
120             change(node,local,value);
121         }
122         else if(strcmp(act,"find")==0){
123             int local;
124             scanf("%d",&local);
125             if(local>_size(node)) printf("default\n");
126             else printf("%d\n",_find(node,local)->value);
127         }
128         else if(strcmp(act,"find_value")==0){
129             int local;
130             scanf("%d",&local);
131             if(local>_size(node)) printf("default\n");
132             else if(find_value(node,local)==-1) printf("none\n");
133             else printf("%d\n",find_value(node,local));
134         }
135     }
136     return 0;
137 }
138 /*
139 
140 add 1
141 add 2
142 add 3
143 add 4
144 print
145 delete 2
146 print
147 find_value 3
148 find 3
149 change 2 100
150 print
151 size
152 end
153 
154 */

 

数据结构 链表

标签:

原文地址:http://www.cnblogs.com/general10/p/5945364.html

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