顺序表:
参考:顺序表的基本操作(C语言详解版)
#include <stdio.h>
#include <stdbool.h>
typedef struct Table{
#define MAX_TABLE_SIZE 5
int *head;
int length;
int size;
int curIndex;
bool (*addElement)(struct Table* pt,int element);
void (*showAllElements)(struct Table* pt);
}Table;
bool newTable(Table* pt);
bool addElement(Table* pt,int element);
void showAllElements(struct Table* pt);
int main()
{
int i;
Table t;
if(newTable(&t) == false){
printf("new fail..\n");
}else{
printf("new OK..\n");
}
for(i=0;i<100;i++){
if(t.addElement(&t,i) == false){
printf("膘满了%d\n",i);
break;
}
}
t.showAllElements(&t);
getchar();
return 0;
}
bool newTable(Table* pt){
pt->head = (int*)malloc(MAX_TABLE_SIZE*sizeof(int));
if(pt->head == NULL){
return false;
}
pt->length = 0;
pt->size = MAX_TABLE_SIZE;
pt->curIndex = 0;
pt->addElement = addElement;
pt->showAllElements = showAllElements;
return true;
}
bool addElement(Table* pt,int element){
if(pt->curIndex < pt->size){
pt->head[pt->curIndex] = element;
pt->curIndex++;
return true;
}
return false;
}
void showAllElements(struct Table* pt){
int i;
for(i=0;i<pt->size;i++){
printf("head[%d]:%d\n",i,pt->head[i]);
}
}