• 动态链表及其基本功能的实现


    /*
    动态创建一个链表:动态内存申请+模块化设计
    1、创建链表
    headNode指针 
    2、创建结点
    3、插入节点
    4、删除节点
    5、打印遍历链表(测试) 
    */ 
    #include <stdio.h>
    #include <stdlib.h> 
    struct Node{
        int data;           //数据域 
        struct Node* next;  //指针域 
    }N;
    struct Node* creatList(){
        struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
        //headNode变成了结构体变量
        
        headNode->next = NULL;
        return headNode;//返回头节点地址 
        
    }//创造链表 
    struct Node* createNode(int data){
    
        struct Node* Node = (struct Node*)malloc(sizeof(struct Node));
        Node->data=data;
        Node->next=NULL;
        return Node;//返回结点地址 
    } //创造节点 
    void printList(struct Node* headNode){
        struct Node* pMove=headNode->next;
        while(pMove){
            printf("%d	",pMove->data);
            pMove=pMove->next;
        } 
        printf("
    "); 
    } //打印链表 
    void insertNodeByHead(struct Node* headNode,int data){
        struct Node* NewNode = createNode(data);
        NewNode->data = data;
        NewNode->next = headNode->next;
        headNode->next = NewNode;
    } //头插法
    void deleteNodeByAppoint(struct Node* headNode,int data){
        struct Node* posNode = headNode->next;
        struct Node* posNodeFront = headNode;
        if(posNode == NULL) printf("表空,任务失败");
        else{
            while(posNode->data != data){
              posNodeFront = posNode;
              posNode = posNode->next;
              if(posNode == NULL){
              printf("表尽,任务失败");
              return;    
        }//if
            }//while
            posNodeFront->next=posNode->next;
            free(posNode);
        } 
    } //删除指定结点 
    int main(){
        struct Node* list=creatList();
        insertNodeByHead(list,1);
        insertNodeByHead(list,2);
        insertNodeByHead(list,3);
        printList(list);
        deleteNodeByAppoint(list,2);
        printList(list);
        system("pause"); 
        return 0;
    }
  • 相关阅读:
    UVa 10810
    Android UI开发第三十四篇——SlidingPaneLayout
    eclipse安装插件checkstyle
    eas bos 编辑界面 editUIt 属性值为空
    [置顶] 使用U盘安装ubuntu系统
    Ajax核心——XMLHttpRequest基础
    转储指定的数据块并查看TRC信息
    android 获取当前版本号/修改自定义的应用程序的版本号
    poj3101
    [置顶] mysql中的set和enum类型的用法和区别
  • 原文地址:https://www.cnblogs.com/OKDA/p/12483740.html
Copyright © 2020-2023  润新知