1. 程式人生 > >C:單鏈表的簡單實現

C:單鏈表的簡單實現

前言

今天整理資料的時候翻出來的檔案,發現是以前學習資料結構的時候寫的程式碼,當初是看郝凱老師的視訊學習的C語言的資料結構,下面是對於一個單鏈表的簡單的實現。

/**
 ****************************************************************************
 *@file     SingleLinker.c
 *@version  V1.00
 *@brief    
 *@date     2015/11/24
 ************************************************************
***************** */ #include <stdio.h> #include <malloc.h> typedef struct Node{ int data; struct Node *pNext; }NODE,*pNODE; pNODE CreateList(void); void TraveList(pNODE pHead); void InsertNode(pNODE pHead); void DeleteNode(pNODE pHead); void SearchNode(pNODE pHead); int main(void) { char Temp = '0';
pNODE pHead; pHead = (pNODE)malloc(sizeof(NODE)); if(pHead == NULL){ printf("Fail to set memory\n"); } pHead = CreateList(); printf("If you want show the list? y/n? \n"); while('Y' == getchar() || 'y' == getchar()){ TraveList(pHead); } InsertNode(pHead);
TraveList(pHead); DeleteNode(pHead); TraveList(pHead); SearchNode(pHead); printf("Test Linker\n"); return; } /** **************************************************************************** * @brief CreateList * @param none * @return pNODE * @note ***************************************************************************** */ pNODE CreateList(void) { int len; int val; int i; pNODE pHead = NULL; pNODE pTemp; pHead = (pNODE)malloc(sizeof(NODE)); if(pHead == NULL){ printf("Fail to set memory\n"); return; } pTemp = pHead; pTemp->pNext = NULL; printf("Please input length of the list\n"); scanf("%d",&len); pHead->data = len; for(i=1; i<=len; i++){ printf("Please input the %dth value\n",i); scanf("%d",&val); pNODE pNEW = (pNODE)malloc(sizeof(NODE)); if(pNEW == NULL){ printf("Fail to set memory\n"); return; } pNEW->data = val; pTemp->pNext = pNEW; pNEW->pNext = NULL; pTemp = pNEW; } return pHead; } /** **************************************************************************** * @brief TraveList * @param [in]pHead * @return none * @note ***************************************************************************** */ void TraveList(pNODE pHead) { int i = 0; pNODE pTemp = pHead->pNext; while(pTemp != NULL){ i++; printf("the %dth Value is:%d\n",i,pTemp->data); pTemp = pTemp->pNext; } return; } /** **************************************************************************** * @brief InsertNode * @param [in]pPostion * @param [in]value * @return none * @note ***************************************************************************** */ void InsertNode(pNODE pHead) { int i,n,val; pNODE pTemp = pHead; printf("Which node do you want to insert?1~%d \n",pHead->data); scanf("%d",&n); if(n > pHead->data){ printf("The number is over range\n"); return; } printf("Please input the value\n"); scanf("%d",&val); for(i=0; i<n; i++){ pTemp = pTemp->pNext; } pNODE pInsert = (pNODE)malloc(sizeof(NODE)); if(pInsert == NULL){ printf("Fail to set memory\n"); return; } pHead->data +=1; pInsert->data = val; pInsert->pNext = pTemp->pNext; pTemp->pNext = pInsert; return; } /** **************************************************************************** * @brief DeleteNode * @param [in]pHead * @return none * @note ***************************************************************************** */ void DeleteNode(pNODE pHead) { int i,n,val; pNODE pTemp = pHead; pNODE pDel = pTemp->pNext; printf("Which node do you want to delete?1~%d \n",pHead->data); scanf("%d",&n); if(n > pHead->data){ printf("The number is over range\n"); return; } for(i=0; i<n-1; i++) { pTemp = pTemp->pNext; pDel = pDel->pNext; } pHead->data -=1; pTemp->pNext = pDel->pNext; } /** **************************************************************************** * @brief SearchNode * @param[in] pHead * @return none * @note ***************************************************************************** */ void SearchNode(pNODE pHead) { int i,n; pNODE pTemp = pHead; printf("Which node do you want to Search?1~%d \n",pHead->data); scanf("%d",&n); if(n > pHead->data){ printf("The number is over range\n"); return; } for(i=0; i<n; i++) { pTemp = pTemp->pNext; } printf("Value of the NODE is %d\n",pTemp->data); }

相關推薦

C單鏈簡單實現

前言 今天整理資料的時候翻出來的檔案,發現是以前學習資料結構的時候寫的程式碼,當初是看郝凱老師的視訊學習的C語言的資料結構,下面是對於一個單鏈表的簡單的實現。 /** ******************************************

C++順序實現約瑟夫問題_密碼不同

class josephus main clu 定義 void seq esp while //.h #pragma once#include <iostream>using namespace std;#define MAXSIZE 100 template

Java 單鏈簡單實現

pre println ret 返回 .data del span 鏈表 font 實現功能並不完全,只有添加,刪除,和遍歷功能,後續還會繼續添加 定義節點屬性 class Node{ //定義節點屬性 public int Data; public No

資料結構單鏈實現與Joseph環

實驗目的:建立一個單鏈表 編制一個演示單鏈表插入、刪除、查詢等操作的程式 2.需求分析 本程式用C++編寫,完成單鏈表的生成,任意位置的插入、刪除,以及確定某一元素在單鏈表中的位置。 ① 輸入的形式和輸入值的範圍:插入元素時需要輸入插入的位置和元素的值;刪除元素時輸入刪除

C語言面向物件程式設計單鏈實現(5)

 前面我們介紹瞭如何在 C 語言中引入面嚮物件語言的一些特性來進行面向物件程式設計,從本篇開始,我們使用前面提到的技巧,陸續實現幾個例子,最後呢,會提供一個基本的 http server 實現(使用 libevent )。在這篇文章裡,我們實現一個通用的資料結構:單鏈表。  

C單鏈簡單實現和應用!!!

在單鏈表裡面,每個節點包含一個指向下一個節點 的指標。連結串列的最後一個節點的指標欄位是一個值為NULL的指標,他的作用就是提示連結串列後面不再有其他的節點。在你找到連結串列的第一個節點的時候呼叫節點裡面的指標就可以依次訪問剩下所有的節點。為了記住連結串列的起始位置,可以用

C語言單鏈實現(二) 就地逆置,就地歸併

#include<iostream> #include<stdio.h> #include<math.h> #define LEN sizeof(struct Nodelist) using namespace std; typedef

C語言無頭節點單鏈實現

連結串列相對於順序表來說,插入和刪除更加方便,然而想要查詢一個元素時卻沒有順序表方便。 我們需要實現以下介面: #ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include <stdio.h> #include <strin

快速傅立葉變換FFT的學習筆記一C語言程式碼的簡單實現

快速傅立葉變換FFT的學習筆記一:C語言程式碼的簡單實現 fft.c #include "math.h" #include "fft.h" void conjugate_complex(int n,complex in[],complex out[]) { int i = 0

資料結構 筆記單鏈的具體實現

LinkList設計要點 -類模板,通過頭結點訪問後繼結點 -定義內部結點型別Node,用於描述資料域和指標域 -實現線性表的關鍵操作(增,刪,查,等) template<typename T> class LinkList : public List<T>

資料結構 筆記靜態單鏈實現

單鏈表的一個缺陷 -觸發條件 ·長時間使用單鏈表物件頻繁增加和刪除資料元素 -可能的結果 ·堆空間產生大量的記憶體碎片,導致系統執行緩慢 新的線性表 設計思路: 在單鏈表的內部增加一片預留的空間,所有Node物件都在這片空間中動態建立和動態銷燬。 靜態單鏈表的實

C#】【資料結構】002-線性單鏈

C#資料結構:單鏈表 1、自定義單鏈表結構: 單鏈節點類 using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 單鏈表節點 ///

C# 單鏈實現

/// <summary> /// 節點類 /// </summary> public class Node<T> { private T _data; private Node&

資料結構(C++)順序實現

包含取值、查詢、插入、刪除等功能:  #include <iostream> using namespace std; typedef int ElemType; //定義 #define MAXSIZE 100 typedef struct {ElemTyp

數據結構開發(6)靜態單鏈實現

增加 父類 troy 導致 space header position 成員 結果 0.目錄 1.單鏈表的遍歷與優化 2.靜態單鏈表的實現 3.小結 1.單鏈表的遍歷與優化 問題: 如何遍歷單鏈表中的每一個數據元素? 當前單鏈表的遍歷方法: 遺憾的事實: 不能以線性

C語言單鏈及基本操作的實現

        資料結構中,單向連結串列(又名單鏈表、線性連結串列)是連結串列的一種,其特點是連結串列的連結方向是單向的,對連結串列的訪問要通過從頭部開始,依序往下讀取。         下面的程式碼是使用指標實現的

單鏈的反轉-遞迴和迴圈方式實現

/** * 通過遞迴方式實現單鏈表的反轉 * 原來的單鏈表成為反轉後的單鏈表 * * @param pList NODE_t * :帶頭結點的單鏈表的第一個有效結點 */ NODE_t * SListRecur(NODE_t *pFirst) { if

c++實現 c++單鏈實現(採用模板類)

函式實現資料的插入(頭插&&尾插)、刪除(頭刪&&尾刪)、查詢、按值插入、按值刪除、求長、單鏈表清除、單鏈表摧毀、資料的逆置以及資料排序 main函式 #include"List.h"//單鏈表 void main() { List&l

C語言單鏈實現19個功能完全詳解

#include "stdafx.h" #include "stdio.h" #include <stdlib.h> #include "string.h"   typedef int elemType ;   /************************

資料結構與演算法分析——帶有頭結點的單鏈實現(C語言)

資料結構與演算法分析——帶有頭結點的單鏈表的實現 表——一種簡單的資料結構,有兩種實現方式,陣列和連結串列,各有各的優點,用陣列來寫優點是查詢一個元素花費O(1)的時間,缺點是事先並不知道元素個數需要預估的大一些,可能浪費空間,另外刪除和插入花費O(N)的時間,用連結串