單向鍊錶的一些操作

2021-06-25 07:25:02 字數 1313 閱讀 4919

//writed by caolichen

#include#include//定義單鏈表節點型別

typedef struct lnode

slink;

//初始化線性表,即將表頭結點的表頭指標指向為空(null)

slink * initlink(slink *head)

//建立線性表,輸入n個int型變數

void createlink(slink *head,int n)

printf("請輸入第%d個資料:",(6-n));

scanf("%d",&(tmp->data));

tmp->next = l->next; //尾插法,順序

l->next = tmp;

l = tmp;

//tmp->next = head->next; //頭插法,逆序

//head->next = tmp;

} printf("建立線性表成功!\n");

}//列印線性表,鍊錶的遍歷

void printlink(slink *head)

printf("列印線性表成功!\n");

}//銷毀線性表,即逐一釋放節點

void destorylink(slink *head)

free(tmp);

printf("銷毀鍊錶成功!\n");

}//判斷鍊錶是否為空

void isemptylink(slink *head)

else

//return((head->next) == null); //返回為1,則為空表

}//求線性表的長度

void lengthlink(slink *head)

printf("線性表的長度是%d。\n",count);

}int insertlink(slink *head,int n,int data)

if(head == null)

else

printf("插入結點成功!\n");

return 1;

}//刪除第n個結點,找到第n-1個結點,判斷是否有後繼結點,如果有則直接刪除

int deletelink(slink *head, int n)

if (head == null)

else

else

} printf("刪除結點成功!\n");

return 1; //刪除結點成功

}int main()

自己寫的一些單向鍊錶操作

typedef struct singlist singnnode,psingnnode typedef struct looplist loopnode,ploopnode 單向還需修改哈,搜尋的時候是返回前乙個位置還是當前位置 void csingnlist inestmylist psingn...

單向鍊錶中的一些演算法

1.在乙個單向鍊錶中,尋找鍊錶中間節點。使用兩個指標,快指標每次步進為2,慢指標每次步進為1。當快指標到達鍊錶尾部時,慢指標指向的就是鍊錶的中間。node findmiddlenode node head return p1 2.在單向鍊錶中尋找倒數第n個元素 思路同1,使用兩個指標,它們之間保持n...

鍊錶的一些操作

判斷兩個鍊錶是否有交點 判斷兩個單鏈表是否相交,如果相交,給出相交的第乙個點 假設兩個鍊錶都不存在環 相交的煉表示意圖如下所示。兩個沒有環的鍊錶如果是相交於某一結點,如上圖所示,這個結點後面都是共有的。所以如果兩個鍊錶相交,那麼兩個鍊錶的尾結點的位址也是一樣的。程式實現時分別遍歷兩個單鏈表,直到尾結...