資料結構 順序表和單鏈表c

2022-02-25 16:38:17 字數 2651 閱讀 9698

#include using namespace std;

constexpr auto maxsize = 100;

constexpr auto error = 0;

constexpr auto ok = 1;

typedef int elemtype;

//順序表的儲存結構

typedef struct

sqlist;

//構造乙個空的順序表

int initlist(sqlist &l)

//取值--通過e返回第i個元素的傳值

int getelem(sqlist l, int i, elemtype& e)

//查詢--在順序表l中查詢值為e的資料元素,返回其序號

int locateelem(sqlist l, elemtype e)

return 0; //查詢失敗,返回0

}//插入--在順序表l中第i個位置插入新的元素e,i值的合法範圍是1<=i<=l.length+1

int listinsert(sqlist& l, int i, elemtype e)

//刪除--在順序表刪除第i個元素,i值的合法範圍是1<=i<=i.length

int listdelete(sqlist& l, int i)

int main()

//為方便測試其他方法,將順序表l初始化賦值一些資料

int num = ;

for (int n = 0; n < sizeof(num) / sizeof(num[0]); n++)

cout << "賦值完成,當前順序表長度: " << l.length << endl;

//測試順序表的取值--返回第3個元素的值到e

if (getelem(l, 3, e)) cout << "第3個元素的值是: " << e << endl;

//測試順序表的查詢--查詢元素24的位置並返回

if (int index = locateelem(l, 24))

else cout << "元素查詢失敗!" << endl;

//測試順序表的插入--在第5個位置插入25

if (listinsert(l, 5, 25)) cout << "插入後第5個位置為: " << l.elem[4] << endl;

//測試順序表的刪除--刪除第4個元素

if (listdelete(l, 4)) cout << "刪除成功!" << endl;

}

#include using namespace std;

constexpr auto error = 0;

constexpr auto ok = 1;

typedef int elemtype;

//單鏈表的儲存結構

typedef struct lnode

lnode, * linklist; //linklist為指向結構體lnode的指標型別

//構造乙個空的單鏈表l

int initlist(linklist& l)

//建立單鏈表--(前插法)逆位序輸入n個元素的值,建立帶表頭結點的單鏈表

void createlist_h(linklist& l, int n)

}//建立單鏈表--(後插法)正位序輸入n個元素的值,建立帶表頭結點的單鏈表

void createlist_r(linklist& l, int n)

}//插入--在帶有頭結點的單鏈表l中第i個位置插入值為e的新節點

int listinsert(linklist& l, int i, int e)

if (p == null || j < i - 1) return error;//檢查插入位置是否合法

linklist s;

s = new lnode;

s->data = e;

s->next = p->next;

p->next = s;

return ok;

}//刪除位置i上的元素,並由e返回刪除的元素

int listdelete(linklist& l, int i)

if (!(p->next) || j > i - 1) return error; //刪除位置不合法

q = p->next;

p->next = q->next; //改變刪除結點前驅結點的指標域

delete q; //釋放空間q

return ok;

}//取值--在帶有頭結點的單鏈表l中根據序號i通過e返回第i個資料

int getelem(linklist l, int i, elemtype& e)

if (!p || j > i) return error;

e = p->data;

return ok;

}//查詢--在帶有頭結點的單鏈表l中查詢值為e的元素

lnode* locateelem(linklist l, elemtype e)

return p; //查詢成功返回為e的結點位址p,失敗則p為null

}//方便測試輸入單鏈表

void printlinklist(linklist l)

}int main()

資料結構 順序表和單鏈表

typedef struct sqlist sqlist,psqlist bool isfull psqlist psq bool isempty psqlist psq void initsqlist psqlist psq 初始化 bool insert psqlist psq,int pos,...

C語言資料結構之順序表和單鏈表

define crt secure no warnings 1 include struct sqlist void initlist sqlist l l.length 0 void charu sqlist l void listinsert sqlist l,int i,int e l.dat...

資料結構練習題(順序表和單鏈表)C

1 程式設計實現順序表的各種基本運算,並在此基礎上設計乙個主程式,完成如下功能 1 初始化順序表 2 給定乙個整型資料元素,將此元素插入到順序表的第i個位置 3 刪除順序表中第i個位置的元素,利用e返回被刪除的元素。include include define ok 1 define error 0...