#include
#include
using namespace std;
/****預定義****/
#define stack_init_size 100
#define stackincrement 10
#define list_init_size 100
#define listincrement 10
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef char selemtype;
typedef int elemtype;
typedef int status;
typedef struct node* position;
typedef struct node* list;
typedef struct node* queueptr;
typedef struct node;//鍊錶結構
typedef struct listqueue;//佇列結構
typedef struct sqstack;//堆的結構體
typedef struct
sqlist;//順序表的結構體
/*******構建乙個初始化的順序表********/
status initsqlist(sqlist &l)
/*******展示線性表的內容**********/
void show_sqlist(const sqlist &l)
cout << endl;
}/*******構建乙個初始化的棧*********/
status initstack(sqstack &s)
/********將e元素壓入棧內********/
status push(sqstack&s, const selemtype e)
*s.top++ = e;
return ok;
}/*********將棧頂刪除並返回元素值********/
status pop(sqstack &s, selemtype &e)
/**********展示棧的內容************/
status show_s(const sqstack &s)
while (p != s.base);
cout << endl;
return ok;
}/**********3.17********/
status distinguish(sqstack &s)//判斷以@為結束符的字串行是否為逆序列
while (*(symbol-1)!= '&');
num1 = num1 - 1;
symbol--;
do while (*symbol == e);
if(s.top==s.base&&num2==num1)
else
}/************3.19*************/
void init_l(sqlist &l)
+d+[b+c]+e]+2+[1+3]+2+[3+4]";
int num = strlen(word);
for (int i = 0; i < num; i++)
}status judge_bracket(sqstack &s, sqlist &l)//判別表示式中所含括號是否正確配對出現
'|| l.elem[i] == '['||l.elem[i] == ']')
else }}
}if (s.top == s.base)
else
}/***************3.21****************/
int symbol_priority(char e)//符號優先順序判斷
return prioirity;
}void infix_turn_postfix(const char *word,sqstack &s)//將表示式轉化為字尾表示式
else
else
else
} //不是結束括號與之前情形一樣
else
else
else
}else }}
}}}word++;
num--;
} while ( num!=0);
while (s.base != s.top)
}/*******3.28********/
/*******構建乙個初始化的迴圈鍊錶佇列********/
status initqueue(listqueue &q)
/*******入佇列********/
status enqueue(listqueue &q,selemtype e)
/*******出佇列*******/
status dequeue(listqueue &q, selemtype &e)
e = l->date;
free(l);
prior->next = q.rear;
return ok;
}/****展示佇列****/
void show_queue(listqueue &q)
}/****3.31****/
void judge_palindrome(sqstack &s,listqueue &q)//判斷輸入的字元是否為回文序列,以'@'結尾
if (word != '@')
} while (word != '@');
for (int i = 0; i
else
}if (snum == num)
else
}/****3.32****/
void init_fibonacci_sequence(listqueue &q, int max, int k)//建立裴波那契數列的迴圈佇列,前k項滿足fn<=max,fn+1>max;
cout << num << endl;
int *f = (int*)malloc(num * sizeof(int));
f[0] = 1; f[1] = 1;
for (int i = 0; i < num-2; i++)
for (int i = 0; i < k; i++)
}void main()
push(s,*word);
if(*word=='@')
word++;
} while (*word != '@');
show_s(s);
if (distinguish(s)==1)
else */
/****3.18****/
/*sqlist l; initsqlist(l); init_l(l); show_sqlist(l);
sqstack s; initstack(s); show_s(s);
if (judge_bracket(s, l)) cout << "right!" << endl;
else */
/****3.21****/
/*const char *word = "(a+b)*(c/(d-e)+f)+a*b*c"; //"a+b*c+(d*e+f)*g";
sqstack s;initstack(s);
infix_turn_postfix(word, s);*/
/****3.31****/
/*listqueue q; initqueue(q);
sqstack s; initstack(s);
judge_palindrome(s,q);*/
/****3.32****/
listqueue q; initqueue(q);
init_fibonacci_sequence(q,55,5);
show_queue(q);
system("pause");
}
SCU C 習題集 第三章部分
建立乙個物件陣列,內放5個學生的資料 學號 成績 請輸出第1 3 5個學生的資料。include include using namespace std const int count 5 class student void student set value void func student ...
嚴蔚敏版 資料結構 第一章
首先,補充一下看書過程中遺漏的知識點 抽象資料型別的定義由乙個值域和定義在該值域上的一組操作組成。若按照其值的不同特性,可細分為下列3種型別 資料結構的形式定義為 資料結構是乙個二元組 data structure d,s 其中,d是資料元素的有限集,s是d上關係的有限集。抽象資料型別可以用三元組表...
資料結構 嚴蔚敏版第二章筆記
準備考研了,我們學校使用的教材不是這一本,大概整理一下。共勉 線性結構的特點 在資料元素的非空有限集合中 存在唯一的乙個被稱為 第乙個 的資料元素 存在唯一的乙個被稱為 最後乙個 的資料元素 除了第乙個之外,集合中的每個資料元均只有乙個前驅 除了最後乙個之外,集合中的每乙個元素均只有乙個後繼 2.1...