C:单链表的简单实现

来源:互联网 发布:淘宝网购买流程 编辑:程序博客网 时间:2024/06/15 09:05

前言

今天整理资料的时候翻出来的文件,发现是以前学习数据结构的时候写的代码,当初是看郝凯老师的视频学习的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);}
0 0
原创粉丝点击