靜態鍊錶(資料結構)

2021-09-01 19:52:27 字數 2936 閱讀 3687

靜態鍊錶:

結構體變數中包含資料域和游標域

typedef struct node

snode;

靜態鍊錶:

1.陣列的下標為0的元素的游標域存放的是未使用鍊錶的第乙個節點的下標。

2.陣列的最後乙個元素(slist_size-1)存放的是第乙個有資料值得元素的下標。

3.最後乙個元素相當於單鏈表的頭結點。

具體**如下:

//**********===slist.h**********==

#define slist_size 22

typedef int elem_type;

typedef struct node

snode;

typedef struct list

slist,*pslist;

void init(pslist psl);//初始化

static int isfull(pslist psl);

void inserttail(pslist psl,elem_type val);//尾插

void inserthead(pslist psl,elem_type val);

int isempty(pslist psl);

void deletekey(pslist psl,int val);

void show(pslist psl);

void clear(pslist psl);

void destroyed(pslist psl);

//**********===slist.cpp**********=

# include # include "slist.h"

void init(pslist psl)//初始化

int i=0;

for(i;inode[i].cursor = i+1;

} psl->node[i++].cursor = -1;

psl->node[i].cursor=-1;

}static int isfull(pslist psl)

void inserttail(pslist psl,elem_type val)

int index = psl->node[0].cursor;

psl->node[0].cursor = psl->node[index].cursor;

psl->node[index].mdata =val;

psl->node[index].cursor=-1;

int lastindex=slist_size-1;

while(psl->node[lastindex].cursor != -1)

psl->node[lastindex].cursor =index;

}void inserthead(pslist psl,elem_type val)

int index = psl->node[0].cursor;

psl->node[0].cursor = psl->node[index].cursor;

psl->node[index].mdata =val;

psl->node[index].cursor=psl->node[slist_size-1].cursor;

psl->node[slist_size-1].cursor=index;

}int isempty(pslist psl)

void deletekey(pslist psl,int val)

int index = slist_size -1;

int nextindex =psl->node[index].cursor ;

while(nextindex !=-1)

index = nextindex;

nextindex = psl->node[nextindex].cursor;

} if(nextindex == -1)

psl->node[index].cursor = psl->node[nextindex].cursor;

psl->node[nextindex].cursor =psl->node[0].cursor;

psl->node[0].cursor=nextindex;

}void show(pslist psl)

int index = psl->node[slist_size-1].cursor ;

while(index!=-1)

printf("\n");

}void clear(pslist psl)

int i=0;

for(i;inode[i].cursor=i+1;

} psl->node[i++].cursor =-1;

psl->node[i].cursor=-1;

}void destroyed(pslist psl)

//**********====main.cpp*****===

# include "slist.h"

int main()

show(&sl);

deletekey(&sl,4);

for(i;i<20;i++)

show(&sl);

clear(&sl);

destroyed(&sl);

return 0;

}

資料結構鍊錶 靜態鍊錶

1 在這裡我們首先要複習一下鍊錶c語言的定義 這看起來很簡單,但實際上至關重要!data域 存放結點值的資料域。next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 也就是說next域儲存的是乙個位址,這個位址是下一節點的位址。注意 鍊錶通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一...

資料結構 靜態鍊錶

首先我們讓陣列的元素都是由兩個資料域組成,data和cur。也就是說,陣列的每乙個下標都對應乙個data和乙個cur。資料域data用來存放資料元素,也就是通常我們要處理的資料 而游標cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標。我們把這種用陣列描述的鍊錶叫做靜態鍊錶。陣列的第...

資料結構 靜態鍊錶

include using namespace std struct node typedef node linklist define maxsize 20 void init linklist list int getlength linklist list int malloc linklis...