線性表的單鏈表儲存結構
typedef struct node
node;
typedef struct node *linklist;
單鏈表的讀取
/*初始條件:順序線性表l已存在且含有頭結點,1<=i<=listlength(l)
操作結果:用e返回l中第i個資料元素的值*/
status getelem(linklist l,int i,elemtype *e)
if(!p||j>i) return error;
*e=p->data;
return ok;
}
單鏈表的插入
/*初始條件:順序線性表l已存在且含有頭結點,1<=i<=listlength(l)
操作結果:在l中第i個結點位置之前插入新的資料元素e,l的長度加1*/
status listinsert(linklist *l,int i,elemtype e)
if(!p||j>i) return error;
//現在p指向第i-1個結點
s=(linklist)malloc(sizeof(node));//生成新的結點
s->data=e;
s->next=p->next;//先接上
p->next=s;//後斷開,接到新的結點上
}
單鏈表的刪除
/*初始條件:順序線性表l已存在且含有頭結點,1<=i<=listlength(l)
操作結果:刪除l的第i個節點,並用e返回其值,l的長度減1*/
status listdelete(linklist *l,int i,elemtype *e)
if(!(p->next)||j>i) return error;
q=p->next;
p->next=q->next;//斷開
*e=q->data;//將q節點中的資料給*e
free(q);//釋放記憶體
return ok;
}
單鏈表的整表建立(頭插法與尾插法)
/*隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(頭插法)*/
void createlisthead(linklist *l,int n)
}
/*隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(尾插法)*/
void createlisttail(linklist *l,int n)
r->next=null;
}
單鏈表的整表刪除
/*初始條件:順序線性表l已存在,操作結果:將l重置為空表*/
status clearlist(linklist *l)
(*l)->next=null;
return ok;
}
線性表鏈式儲存結構
include include 線性表鏈式儲存結構 typedef struct lnodelnode,linklist int initlist linklist l 初始化 int endinsert linklist l,int e p next s return 1 末尾插入元素 int g...
線性表鏈式儲存結構
為了表示每個資料元素ai與其直接後繼資料元素ai 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊 即直接後繼的儲存位置 我們把儲存資料元素資訊的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱做指標或鏈。這兩部分資訊組成資料元素a...
線性表 鏈式儲存結構
1 線性表的鏈式儲存結構 每個元素多用乙個位置來存放指向下乙個元素位置的指標,依次類推,可以找到所有的元素。鏈式儲存中,除了要儲存資料本身外,還要儲存它的後繼元素的儲存位址 指標 資料域 儲存資料資訊的域 指標域 儲存直接後繼位置的域。這兩部分資訊組成資料元素稱之為儲存映像,節點node。鍊錶中每個...