数组单链表
在那个久远的没有指针的年代,,据说伟大的先人们都是用数组来实现单链表
#define MAXSIZE 20 typedef struct { int cursor; int data; }Component; void cursor_init(Component list[], int *len) { int i = 0; for(i=0; i<MAXSIZE; i++) { list[i].cursor = i + 1; } list[MAXSIZE-1].cursor = 0; *len = 0; } void cursor_print1(Component list[]) { int start = list[MAXSIZE-1].cursor; int i = start; if(start == 0) { printf("kong -----\n"); return; } while(i) { printf("%d ", list[i].data); i = list[i].cursor; } printf("\n"); } void cursor_print2(Component list[], int *len) { int start = list[MAXSIZE-1].cursor; int i = 0; for(i=0;i<*len;i++) { printf("%d ", list[start].data); start = list[start].cursor; } printf("\n"); } void cursor_insert(Component list[], int position, int data, int *len) { int i = 0; int start = list[MAXSIZE-1].cursor; int j = start; int p; if(position<1 || position > *len+1) { printf("no----\n"); return; } p = list[0].cursor; list[p].data = data; list[0].cursor = list[p].cursor; if(start == 0) { list[MAXSIZE-1].cursor = p; list[p].cursor = 0; }else if( position==1 ){ list[MAXSIZE-1].cursor = p; list[p].cursor = start; }else { for(i=1; i<position-1;i++) { j = list[j].cursor; } list[p].cursor = list[j].cursor; list[j].cursor = p; } *len += 1; } int main() { Component list[MAXSIZE]; int len; cursor_init(list, &len); cursor_insert(list, 1, 1, &len); cursor_insert(list, 2, 2, &len); cursor_insert(list, 3, 3, &len); cursor_insert(list, 4, 4, &len); cursor_insert(list, 5, 5, &len); cursor_insert(list, 3, 3, &len); cursor_insert(list, 4, 4, &len); cursor_insert(list, 5, 5, &len); cursor_insert(list, 3, 7, &len); cursor_insert(list, 4, 8, &len); cursor_insert(list, 1, 9, &len); cursor_print1(list); cursor_print2(list, &len); return 0; }
删除跟插入类似,就不写了。。。。