北京理工大學c語言鏈表處理,北京理工大學C語言

本文目錄一覽:

C語言鏈表一道題,跪求大神

//刪除所有無效數值結點的函數原型:

void deleteneg(PNODE head)

{

PNODE p,q;         

p = head; 

q = head;

while ( p-next != NULL )         

{   

if( p-next-data  0)

{

p-next = p-next-next;

p = q;

}

q = p;

p = p-next;         

}

用C語言編程實現單鏈表的基本操作

運行結果如下:

完整代碼如下:

#includestdio.h

#includestdlib.h

typedef struct LNode

{

char data;

LNode *next;

}* LNodePtr;

LNodePtr CreateList()

{

//初始化頭節點

LNodePtr head = (LNodePtr)malloc(sizeof(LNode));

head-data = 0;

head-next = NULL;

LNodePtr tNode;//臨時節點

char data;

while(true)

{

scanf(“%c”,data);

if(data == ‘\0’ || data == ‘\n’ || data == ‘\r’ || data == ‘\t’)

{

continue;

}

if(data == ‘!’)//輸入感嘆號停止插入節點

{

printf(“輸入鏈表元素結束。\n”);

break;

}

if(data = ‘A’ data = ‘Z’)

{

tNode = (LNodePtr)malloc(sizeof(LNode));

tNode-data = data;     /*  數據域賦值  */

tNode-next = head-next;

head-next = tNode;

}

else

{

printf(“輸入字元需為大寫字母。\n”);

}

}

return head;

}

/**

加密函數,加密的方式為鏈接head的所有節點前移offset位,但是不支持offset比鏈表的節點數多

@param head 鏈表頭節點

@param offset 節點前移的位數

*/

void EncryptList(LNodePtr head,int offset)

{

LNodePtr tNode = head-next;

int i;

for(i = 0; i offset; i++)

{

if(tNode-next != NULL)

{

tNode = tNode-next;

}

}

if(i == offset)

{

LNodePtr newHead = tNode;

LNodePtr tail = tNode;

while (tail-next != NULL)

{

tail = tail-next;

}

tail-next = head-next;

while(tNode-next != NULL)

{

if(tNode-next != newHead)

{

tNode = tNode-next;

}

else

{

tNode-next = NULL;

break;

}

}

head-next = newHead;

}

else

{

printf(“不支持移動”);

}

}

void ListPrint(LNodePtr head)

{

if(head-next != NULL)

{

LNodePtr tNode = head-next;

while (tNode-next != NULL)

{

printf(“%c “,tNode-data);

tNode = tNode-next;

}

printf(“%c”,tNode-data);

}

}

int main()

{

LNodePtr list = CreateList();

printf(“\n創建的鏈表如下:\n”);

ListPrint(list);

EncryptList(list,3);

printf(“\n所有節點前移了3位之後的鏈表如下:\n”);

ListPrint(list);

printf(“\n”);

return 0;

}

如果看不懂代碼可以問我

用C語言實現對單鏈表的基本操作

#include stdio.h

#include stdlib.h

typedef int DataType;

typedef struct node {

DataType member;

struct node *next;

}*LinkList, *pNode;

// 初始化鏈表

LinkList GetEmptyList() {

LinkList head = (pNode)malloc(sizeof(struct node));

head-member = 0;

head-next = NULL;

return head;

}

// 在非增鏈表中插入結點

void InsertNode(LinkList head, DataType x) {

pNode p,q;

for(p = head; p-next != NULL; p = p-next) {

if(p-next-member = x) {

q = (pNode)malloc(sizeof(struct node));

q-member = x;

q-next = p-next;

p-next = q;

return;

}

}

q = (pNode)malloc(sizeof(struct node));

q-member = x;

q-next = p-next;

p-next = q;

}

// 新結點插入為首結點

void PushNode(LinkList head, DataType x) {

pNode p = (pNode)malloc(sizeof(struct node));

p-member = x;

p-next = head-next;

head-next = p;

}

// 刪除結點

int DeleteNode(LinkList head, DataType x) {

pNode p,q;

for(p = head; p != NULL; p = p-next) {

if(p-next-member == x) {

q = p-next;

p-next = q-next;

free(q);

return 1; // 成功刪除member(第一個)為x的結點

}

}

return 0; // 沒有找到member為x的結點

}

// 查找結點

int FindNode(LinkList head, DataType x) {

pNode p;

for(p = head-next; p != NULL; p = p-next) {

if(p-member == x) return 1; // 找到了

}

return 0; // 沒有找到

}

// 銷毀鏈表

void DestroyList(LinkList head) {

pNode q,p = head;

while(p) {

q = p;

p = q-next;

free(q);

}

head = NULL;

}

// 遍歷鏈表

void ShowList(LinkList head) {

pNode p = head-next;

while(p != NULL) {

printf(“%d “,p-member);

p = p-next;

}

printf(“\n”);

}

int main() {

DataType x,res;

LinkList head = GetEmptyList();

printf(“輸入一個整數(‘q’ to quit): “);

while(scanf(“%d”,x) == 1) {

InsertNode(head, x); // 創建非增鏈表

printf(“輸入一個整數(‘q’ to quit): “);

}

fflush(stdin);

ShowList(head);

printf(“輸入待查找的整數: “);

scanf(“%d”,x);

res = FindNode(head, x);

if(res) printf(“找到了。\n”);

else printf(“沒找到!\n”);

printf(“輸入待刪除的整數: “);

scanf(“%d”,x);

res = DeleteNode(head, x);

if(res) printf(“成功刪除。\n”);

else printf(“沒找到數據為:%d的結點!\n”,x);

ShowList(head);

DestroyList(head);

return 0;

}

原創文章,作者:BNUJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144309.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BNUJ的頭像BNUJ
上一篇 2024-10-24 15:28
下一篇 2024-10-25 13:51

相關推薦

  • 利用Python實現兩個鏈表合併為一個有序鏈表

    對於開發工程師來說,實現兩個鏈表合併為一個有序鏈表是必須掌握的技能之一。Python語言在鏈表處理上非常便利,本文將從多個方面詳細闡述如何利用Python實現兩個鏈表合併為一個有序…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論