データ構造解析の―順序表
くだらないことはあまり言わないし、話す時間もない.今年6月まではデータ構造に重点を置いていた.
コードを詳しく見ると便利です.
コードは個人的にノックしましたが、間違いがあれば、ご指摘ください.
本文は「From quantity to quality」ブログから、転載は作者に連絡してください.
コードを詳しく見ると便利です.
コードは個人的にノックしましたが、間違いがあれば、ご指摘ください.
- #include<iostream>
- #define MaxSize 10
- #define Increasment 5
- using namespace std;
-
- typedef struct{ //
- int *elem;
- int length;
- int ListSize;
- }SqList;
-
- void InitList(SqList *L); //
- void InsertList(SqList *L,int Pos,int elem); // L Pos elem
- void Print(SqList *L); // L ,
- void VirValue(SqList *L, int sPos, int ePos); // L StartPos EndPos 0
- void Delete(SqList *L,int Pos); // L pos
-
- int main()
- {
- int iPos,iElem;
- int Confirm;
- SqList L;
- /*postfix-expression . identifier
- postfix-expression represents a value of struct or union type,
- postfix-expression –> identifier
- postfix-expression represents a pointer to a structure or union,
- */
- InitList( &L );
- cout << "Try to insert or delete an element?" << endl
- << "1 for insert an element" << endl
- << "2 for delete an element" << endl
- << "CTRL+D for quit " << endl;
- while( cin >> Confirm ) //ctrl + d , while
- {
- switch(Confirm)
- {
- case 1: {
- cout << "Input Position and Element" << endl;
- cin >> iPos >> iElem;
- InsertList(&L, iPos, iElem);
- cout << "Sequence\tMEM_addr\t\tSize\t\tElement" << endl;
- Print( &L );
- }
- break;
- case 2: {
- cout << "Input Position" << endl;
- cin >> iPos;
- Delete(&L,iPos);
- cout << "Sequence\tMEM_addr\t\tSize\t\tElement" << endl;
- Print( &L );
- }
- break;
- default:
- cout << "Non-existed options!" << endl;
- break;
- }
- }
- cout << "Cancel,Current Sequence is bellow" << endl;
- cout << "Sequence\tMEM_addr\t\tSize\t\tElement" << endl;
- Print( &L );
- return 0;
- }
-
- void InitList(SqList *L)
- {
- L -> elem = (int *)malloc(MaxSize * sizeof(int));// , L elem
- // (int *), void
- // NULL
- if(!L -> elem)
- {
- cout << "Initialized failed" << endl;
- exit(0);
- }
- else
- cout << "Initialized successfully" << endl;
- cout << "Sequence\tMEM_addr\t\tSize\t\tElement" << endl;
- L -> length = 0;
- L -> ListSize = MaxSize;
- VirValue( L, 0, L->ListSize); // void VirValue(SqList *L, int sPos, int ePos);
- // L *L main , InitList
- Print( L );
- }
-
- void InsertList(SqList *L,int Pos,int elem)
- {
- int *base, *insertPtr, *p;
- if (Pos < 1 || Pos > L -> length + 1)
- {
- cout << "Error:Position is illegal!" << endl;
- // exit(0); // return , , exit ,
- // main while 。disgusting
- }
- if (L->length >= L->ListSize)
- {
- base = (int *)realloc( L->elem,(L->ListSize + Increasment) * sizeof(int) ); //realloc malloc
- L->elem = base;
- L->ListSize += Increasment;
- }
- VirValue( L, L->length, L->ListSize); //
- insertPtr = &(L->elem[Pos-1]);
- for (p = &( L->elem[L->length-1] ); p >= insertPtr; p--) // ,
- {
- *(p + 1) = *p;
- }
- *insertPtr = elem;
- L -> length++;
- }
-
- void Delete(SqList *L,int Pos)
- {
- if(Pos < 1 || Pos > L->length)
- {
- cout << "Error:Position is illegal!" << endl;
- }
- for (Pos; Pos < L->length; ++Pos)
- {
- L->elem[Pos-1] = L->elem[Pos]; // 。
- }
- L->elem[Pos] = 0; // 0
- L->length--;
- }
-
- void Print(SqList *L)
- {
- for (int i = 0; i < L -> ListSize; i++)
- {
- cout << i+1 << "\t\t" << &(L -> elem[i]) << "\t\t" //L -> elem ,
- // L -> elem[i] i , &(L -> elem[i])
- << sizeof(L -> elem[i]) << "\t\t" // , ,int ( )
- << L -> elem[i] << endl;
- }
- }
-
- void VirValue(SqList *L, int sPos, int ePos)
- {
- for (int i = sPos; i < ePos; i++)
- {
- L->elem[i] = 0;
- }
- }
-
- /*
- 1.return exit
- exit() return()
-
- main return (0); 。
-
- void void main() 。
-
- exit() , 。
-
- exit main main void , exit ,exit(1) return (1)
-
- #include <iostream>
- #include <string>
- using namespace std;
-
- int main()
- {
- exit (1);// return (1);
- }
- 2.realloc malloc
-
- C :malloc,calloc,realloc,free 。
- malloc calloc 1 n :
- malloc ( *)malloc(size): “size” , 。
- calloc ( *)calloc(n,size): n “size” , 。
- realloc ( *)realloc(*ptr,size): ptr size。
- free free(void*ptr): ptr 。
- C++ new/delete 。
-
- realloc
- 1. realloc , NULL
- 2. realloc , ,
- 3. ,realloc = + ,realloc ; ,realloc , , free ,realloc
- 4. size 0, free()
- 5. realloc malloc(), calloc(), realloc()
- 6. realloc , malloc。
- */
本文は「From quantity to quality」ブログから、転載は作者に連絡してください.