線性表的鏈式表示及實現

2021-08-21 21:46:58 字數 2444 閱讀 4500

//線性表的鏈式表示及實現

#include #include #include #include using namespace std;

#define ok 1

#define error -1

#define true 1

#define false 0

#define max_size 100

typedef int status;

typedef int elemtype;

typedef struct node

lnode, *linklist;

//在帶頭結點的單鏈線性表l中第i個位置之前插入元素e

status listinsert(linklist &l, int i, elemtype e);

//獲取單鏈表中第i個元素的值

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

//在帶頭結點的單鏈線性表l中,刪除第i個元素,並由e返回其值

status listdelete(linklist &l, int i, elemtype &e);

//逆序輸入n個元素的值,建立代表頭結點的單鏈線性表l

void createlist(linklist &l, int n);

//將單鏈線性表輸出

void print(linklist l);

//將兩個有序鍊錶並為乙個有序鍊錶

void mergelist(linklist &la, linklist &lb, linklist &lc);

int main()

print(l);

int e;

getelem(l, 3, e);//獲取第三個位置的元素的值

printf("可輸出第三個位置的值為%d\n", e);

listdelete(l, 3, e);//刪除第三個位置的元素

printf("刪除後的遍歷:");

print(l);

linklist la, lb, lc;

la = (linklist)malloc(sizeof(lnode));

la->next = null;

lb = (linklist)malloc(sizeof(lnode));

lb->next = null;

createlist(la, 4);

createlist(lb, 7);

//以逆序建立鍊錶為例 la 11, 8, 5, 3; lb 20, 15, 11, 9, 8, 6, 2

mergelist(la, lb, lc);

print(lc);

return 0;

}//在帶頭結點的單鏈線性表l中第i個位置之前插入元素e

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

if(!pre || i<0)//i小於0或者大於表長加1

linklist q;

q = (linklist)malloc(sizeof(lnode));

q->next = pre->next;

pre->next = q;

q->data = e;

return ok;

}//獲取單鏈表中第i個元素的值

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

if(!p || (j>i))//第i個元素不存在

e = p->data;//取第i個元素

return ok;

}//在帶頭結點的單鏈線性表l中,刪除第i個元素,並由e返回其值

status listdelete(linklist &l, int i, elemtype &e)

if(!p->next || (i < 1))

linklist q = p->next;

p->next = q->next;

e = q->data;

free(q);

return ok;

}//逆序輸入n個元素的值,建立代表頭結點的單鏈線性表l

void createlist(linklist &l, int n)

}//將單鏈線性表輸出

void print(linklist l)

printf("\n");

}//將兩個有序鍊錶並為乙個有序鍊錶

/** 已知單鏈線性表la和lb的元素按值非遞減排列

歸併la和lb得到新的單鏈線性表lc,lc也按值非遞減排列*/

void mergelist(linklist &la, linklist &lb, linklist &lc)

else

}pc->next = pa?pa:pb;// 插入剩餘段

free(lb);//釋放lb頭結點

}

線性表的鏈式表示和實現(鏈式)

課程名 資料結構 實驗目的 1 掌握線性表的定義 2 掌握線性表的基本操作,如建立 查詢 插入和刪除等。實驗要求 定義乙個包含學生資訊 學號,姓名,成績 的順序表和煉表,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生...

線性表的鏈式表示

上篇文章是線性表的順序表示,本篇便是線性表的鏈式表示。主函式的步驟包括,輸入線性表資料,對鍊錶的刪除,插入。利用指標進行對鍊錶的訪問。同時為了增加程式可讀性,將結構體定義為lnode,linklist。include 線性表的鏈式表示 using namespace std typedef stru...

線性表的鏈式表示和實現

標頭檔案 函式的宣告 include include include include typedef int elemtype typedef struct node listnode,linklist listnode鍊錶的結點型別,linklist指向鍊錶結點的指標型別 void initlis...