C語言實現帶表頭結點單連結串列的初始化、查詢、插入、刪除、輸出、撤銷等操作
#include<stdlib.h>
#include<stdio.h>
#define ERROR 0
#define OK 1
typedef int ElemType; //建立帶表頭結點的單連結串列
typedef struct node
{
ElemType element;
struct node *link;
}node;
typedef struct
{
struct node *head;
int n;
}headerList;
typedef int Status;
Status Init (headerList *h ) //對單連結串列初始化
{
h->head=(node*)malloc (sizeof(node));
if(!h->head)
return ERROR;
h->head->link=NULL;
h->n=0;
return OK;
}
Status Insert(headerList *h,int i,ElemType x)//單連結串列的插入操作
{
node *p,*q;
int j;
if (i<-1||i>h->n-1)
return ERROR;
p=h->head;
for (j=0;j<=i;j++) p=p->link;
q=malloc(sizeof(node));
q->element=x;
q->link=p->link;
p->link=q;
h->n++;
return OK;
}
Status Output(headerList h)//單連結串列的輸出操作
{
int i=0;
node *p;
if(!h.head)
return ERROR; //判斷單連結串列是否為空
p=h.head;
for(i=0;i<h.n;i++)
{
p=p->link;
printf("%d",p->element);
}
return OK;
}
Status Delete(headerList *h,int i) //刪除操作,不考慮刪除頭結點
{
int j;
node *p,*q;
if(!h->n)
return ERROR;
if(i<0||i>h->n-1)
return ERROR;
q=h->head;
for (j=0;j<i;j++) q=q->link;
p=q->link;
q->link=p->link;
free(p);
h->n--;
return OK;
}
Status Find(headerList h,int i,ElemType *x)//單連結串列的查詢
{
node *p;
int j;
if (i<0||i>h.n-1)
return ERROR;
p=h.head->link;
for (j=0;j<i;j++) p=p->link;
*x=p->element;
return OK;
}
void Destroy (headerList *h) //單連結串列的撤銷
{
node *p;
while (h->head)
{
p=h->head->link;
free(h->head);
h->head=p;
}
}
void main()
{
int i;
int x;
headerList list;
Init (&list); //單連結串列初始化
for(i=0;i<9;i++)
Insert (&list,i-1,i); //插入資料
printf("the linklist is:");
Output (list); //輸出插入資料
Delete (&list,0); //執行刪除操作
printf("\nthe linklist is:");
Output(list); //執行輸出操作
Find(list,0,&x); //執行查詢操作
printf("\nthe value is:"); //輸出查詢結果
printf("%d",1);
Destroy(&list); //執行撤銷操作
}
首先建立一帶表頭結點的單連結串列,首先進行初始化操作,利用for迴圈進行插入,插入結果為012345678,利用刪除操作,刪除0之後,輸出結果為12345678,利用查詢操作找到在0位置出的數為1,執行結果如圖。
相關文章
- 資料結構__連結串列_單連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 單向加頭連結串列的[構建、插入、刪除、查詢、輸出]
- c語言單連結串列的實現,包括連結串列的建立、插入、查詢、刪除、列印、長度計算C語言
- 資料結構_連結串列_單向迴圈連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 資料結構_連結串列_單向迴圈連結串列 & 雙向連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 單向連結串列————遍歷、查詢、插入結點 (基於C語言實現)C語言
- 單向迴圈連結串列——查詢、刪除、插入結點
- 資料結構_連結串列_雙向迴圈連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 雙向連結串列————查詢、刪除、插入結點
- 資料結構_連結串列_雙向迴圈連結串列 & 棧 的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- C語言單向連結串列的增刪操作C語言
- C\C++之用結構體實現連結串列的建立、遍歷、結點插入、結點刪除C++結構體
- (c語言實現)刪除有序連結串列中重複出現的元素C語言
- 資料結構_順序表_順序表的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- Java兩種方式實現連結串列的刪除,返回頭結點Java
- AVL樹(查詢、插入、刪除)——C語言C語言
- C語言實現雙連結串列的(終端)新增和查詢C語言
- 連結串列基礎2(超簡單)--單連結串列的插入和刪除
- C語言資料結構:單向迴圈連結串列的增刪操作C語言資料結構
- 用c語言實現資料結構——單連結串列C語言資料結構
- 資料結構——單連結串列介面實現(C語言)資料結構C語言
- 【資料結構】用C語言實現單連結串列及其常見操作資料結構C語言
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 為什麼陣列查詢比連結串列要快?而插入刪除比連結串列效率低陣列
- C語言資料結構:雙向連結串列的增刪操作C語言資料結構
- 單連結串列實現增刪改查
- 【連結串列問題】刪除單連結串列的中間節點
- c語言單向連結串列逆轉實現方法C語言
- 單連結串列功能函式練習——按規定插入指定節點及刪除最小值節點(C語言)函式C語言
- 圖解帶頭節點的單連結串列的反轉操作圖解
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- 結點插入到單連結串列中
- 雙向迴圈連結串列————遍歷、查詢、插入結點
- Go 語言介面及使用介面實現連結串列插入Go
- C語言資料結構:雙向迴圈連結串列的增刪操作C語言資料結構
- 史上最全單連結串列的增刪改查反轉等操作彙總以及5種排序演算法(C語言)排序演算法C語言
- 【連結串列問題】打卡3:刪除單連結串列的中間節點
- 6-8 單連結串列結點刪除 (20 分)