有表頭結點的鏈棧的基本操作 C語言

2021-10-19 11:00:33 字數 1986 閱讀 2494

#include

#include

#define maxsize

10#define elemtype char

#define ok

1#define error

0//結點型別定義

typedef struct node

node,

*linklist;

//linklist為結構體指標型別

//初始化單鏈表

void

init_list

(linklist *h)

//刪除鍊錶

void

listdestory

(linklist h

)printf

("刪除成功!\n");

}//計算單鏈表的長度

int list_len

(linklist h

)return j;

}//用尾插法建立單鏈表

int create_from_tail

(linklist h

)else

}printf

("\n");

return(ok

);}//按序輸出元素

void

print_out

(linklist h

)printf

("\n");

}//按序號查詢元素

node *

get(linklist h

,int i)

if(i==j)

else

}//按值查詢元素

int locate

(linklist h

,elemtype key)

else

break;}

if(p==

null

)else

}//插入元素

int ins_list

(linklist h

,int i,elemtype e)

else

}//刪除元素

int del_list

(linklist h

,int i, char *e)

else

}//倒序排列元素

void

printrevlist

(linklist h

)//主方法

int main()

else

printf

("查詢到的元素:%c",*

get(

h,a));

printf

("\n");

printf

("請輸入要查詢的元素值:");

getchar()

;scanf

("%c"

,&b)

;locate(h

,b);

//按值查詢

printf

("\n");

printf

("請輸入要插入的位置和元素,[hint:輸入兩個資料之間有逗號]:");

getchar()

;scanf

("%d,%c"

,&d,

&c);

ins_list(h

,d,c)

;//插入

printf

("請輸入要刪除的位置:");

getchar()

;scanf

("%d"

,&f)

;del_list(h

,f,&e)

;//刪除

//倒序排列元素

printf

("倒序排列元素:");

printrevlist(h

);printf

("\n");

//刪除鍊錶

listdestory(h

);return(ok

);}

帶頭結點和不帶頭結點的鏈棧基本操作

c 資料結構 把鏈棧想象成單鏈表頭結點的後插和後刪操作 不帶頭結點的鏈棧 include include include using namespace std typedef struct linknode1 listack1 void initstack1 listack1 l 進棧 lista...

帶表頭結點的單鏈表的基本操作

已知l 是帶表頭結點的非空單鏈表,且p結點既不是首元結點,也不是尾元結點 1.刪除p結點的直接後繼結點 思路 先用工作結點儲存p結點的直接後繼,然後將p結點的指標域指向p結點的直接後繼節點的直接後繼節點,然後再刪除該工作結點。2.刪除p節點的直接前驅結點 有毛病 思路 用工作結點儲存p結點,然後將表...

鏈棧的基本操作

初始化乙個資料元素為整形的鏈棧,並實現進棧 出棧 獲得棧頂元素等操作。通過控制台將1,2,3,4,5進棧,出棧兩次,獲得棧頂元素並輸出,6進棧,列印棧內的所有內容。include include define maxsize 100 define ok 1 define error 0 using ...