一些考研的顺序表,链表,循环列表,双向链表的操作;晚点打栈队列那些,有需要可以关注一下。
自行复制吧,自己敲的,只能说可能存在健壮性的问题。有意见欢迎指出,但是是应试考试,所以太细节的就没扣。
顺序表
代码如下:
#define Initsize 50
typedef struct {
int *data;
int length;
}sqlist;
sqlist Initlist(sqlist &l) {
l.data = new int[Initsize];
if (!l.data) {
cout << "申请失败" << endl; exit(0);}
l.length = 0;
return l;
}//初始化
int Isempty(sqlist l) {
if (l.length == NULL) {
return 1; }
else return 0;//判定空
}
sqlist Assignment(sqlist &l) {
int i;
for (i = 0; i < 10; i++) {
l.data[i] = i + 1;
l.length++;
}
return l;
}
sqlist Export(sqlist l) {
cout << "表中的数据是" << endl;
int i ;
for (i = 0; i < l.length; i++) {
cout << l.data[i] <<' ';
}
cout << endl;
cout << "----------------------------------";
cout << endl;
return l;
}
bool Listinsert(sqlist &l, int i,int e) {
if (i<1 || i>l.length + 1) {
cout << "no change"<<endl; return false; }
if (l.length >= Initsize) {
cout << "no change" << endl; return false; }
for (int j = l.length; j >= i; j--) {
l.data[j] = l.data[j - 1];
}
l.data[i-1] = e;
l.length++;
return true;
}
int Listdelete(sqlist &l, int i, int &e) {
if (i<1 || i>l.length) {
cout << "not legality" << endl; e = NULL; return false; }
e = l.data[i - 1];
for (int j = i; j < l.length;j++) {
l.data[j - 1] = l.data[j];
}
l.length--;
return e;
}
int findi(sqlist l,