標頭檔案:函式的宣告
#include #include #include #include typedef int elemtype;
typedef struct node
listnode,*linklist;//listnode鍊錶的結點型別,linklist指向鍊錶結點的指標型別
void initlist(linklist *head);//單鏈表的初始化操作
int listempty(linklist head);//判斷單鏈表是否為空
listnode* get(linklist head,int i);//按序號查詢操作
listnode* locateelem(linklist head,elemtype e);//按內容查詢操作
int locatepos(linklist head,elemtype e);//定位操作
elemtype modiflist(linklist head,int i,elemtype e);//修改操作
int insertlist(linklist head,int i,elemtype e);//插入操作
int deletelist(linklist head,int i,elemtype *e);//刪除操作
int listlength(linklist head);//求表長操作
void destroylist(linklist head);//銷毀鍊錶操作
函式的定義
#include "鍊錶.h"
void initlist(linklist *head)//單鏈表的初始化操作
(*head)->next = null;
}int listempty(linklist head)//判斷單鏈表是否為空
else }
listnode* get(linklist head,int i)//按序號查詢操作
if (i < 1)//在查詢第i個元素之前,判斷鍊錶是否合法
while(p->next != null && j < i)
if(j == i)
else }
listnode* locateelem(linklist head,elemtype e)//按內容查詢操作
else
}return p;
}int locatepos(linklist head,elemtype e)//定位操作
p = head->next ;
while(p)
else
}if(!p)
return 0;
}elemtype modiflist(linklist head,int i,elemtype e)
p = head->next;
if(i < 1)
if(null == p)
while(p != null)
else
j++;
} return 0;
}int insertlist(linklist head,int i,elemtype e)//插入操作
if(j != i-1)//如果沒找到則插入位置錯誤
if((p = (listnode*)malloc(sizeof(listnode))) == null)//新生成乙個結點,並將e賦值給該結點的資料域
p->data = e;
p->next = pre->next;//插入結點操作
pre->next = p;
return 1;
}int deletelist(linklist head,int i,elemtype *e)//刪除操作
if(j != i-1)//如果沒有找到要刪除的位置,說明刪除結點位置錯誤
p = pre->next;//指標p指向單鏈表中的第i個結點,並將該結點的資料域值賦值給e
*e = p->data;
pre->next = p->next;//將前驅結點的指標域指向要刪除結點的下乙個結點,也就是將p指向的結點與單鏈表斷開
free(p);//釋放p指向的節點
return 1;
}int listlength(linklist head)//求表長操作
return count;
}void destroylist(linklist head)//銷毀鍊錶操作
}
函式的測試
#include "鍊錶.h"
int main(void)
; elemtype b = ;
linklist a,b;
listnode *p;
initlist(&a);
initlist(&b);
for(i = 1;i <= sizeof(a)/sizeof(a[0]);i++) }
for(i = 1;i <= sizeof(b)/sizeof(b[0]);i++) }
printf("單鏈表a中的元素有%d個\n",listlength(a));
for(i = 1;i <= listlength(a);i++) }
printf("\n");
printf("單鏈表b中的元素有%d個\n",listlength(b));
for(i = 1;i <= listlength(b);i++) }
printf("\n");
modiflist(a,1,10);
printf("將單鏈表a中的元素修改後有%d個\n",listlength(a));
for(i = 1;i <= listlength(a);i++) }
printf("\n");
return 0;
}
線性表的鏈式表示和實現(鏈式)
課程名 資料結構 實驗目的 1 掌握線性表的定義 2 掌握線性表的基本操作,如建立 查詢 插入和刪除等。實驗要求 定義乙個包含學生資訊 學號,姓名,成績 的順序表和煉表,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生...
線性表的鏈式表示和實現
線性表的鏈式表示和實現 include include include exit 等 typedef int status define overflow 2 define error 0 define ok 1 線性表的單鏈表儲存結構 struct lnode typedef lnode link...
線性表的鏈式表示和實現
線性表鏈式儲存結構的特點是 用一組任意的儲存單元儲存線性表的資料元素 這組儲存單元可以是連續的,也可以是不連續的 因此,為了表示每個資料元素ai與其直接後繼資料元素a i 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後續的資訊 即直接後續的儲存位置 這兩部分...