C语言----------链表的简单操作

#include <stdio.h>
#include <malloc.h>

typedef struct node{ //定义节点类型
    char data; //数据域
    struct node *next; //指针域
}linklist;
linklist* Create(){ //创建链表
    char key;
    linklist *phead; //头指针
    linklist *pnew; //新节点
    linklist *pend; //尾指针
    phead = (linklist*)malloc(sizeof(linklist));
    pend = phead;
    puts("请输入你要创建的链表,以$结束");
    key=getchar();
    while(key!=‘$‘){
        pnew = (linklist*)malloc(sizeof(linklist));
        pnew ->data = key;
        pend ->next = pnew; //新节点插入表尾
        pend=pnew; //尾指针指向新表尾
        key=getchar();
    }
    pend->next = NULL; //将尾节点指向的下一节点设置为空
    return phead; //返回头指针
}
linklist* Get(linklist* phead,int pos){ //查找第pos个的节点
    int cur = 0; //扫描器
    linklist *p;
    p = phead; //指向头节点
    while((p->next!=NULL)&&(cur<pos)){ //不合法或到达尾部则退出
        p = p->next;
        cur++;
    }
    if(cur==pos){
        return p;
    }else{
        return NULL;
    }
}
void Print(linklist *phead){ //打印链表
    linklist *p = phead->next;
    while(p!=NULL){
        printf("%c",p->data);
        p=p->next;
    }
    puts("");
}
int main(void){
    linklist* phead =  Create();
    Print(phead);
    int pos;
    puts("请输入你要查找的位置");
    scanf("%d",&pos);
    linklist* pfind = Get(phead,pos);
    if(pfind !=NULL)
    printf("%c",pfind->data);
    else
    puts("输入错误!");
    return 0;
}
时间: 2024-10-30 23:50:37

C语言----------链表的简单操作的相关文章

链表的简单操作-----删除,添加,查找(Xcode)

#include <stdio.h> #include "shou_note.h" struct student *create()  /*这个括号是什么意思?*/ { //创建 头指针 尾指针 新指针 struct student *phead=NULL; struct student *pend =NULL; struct student *pnew =NULL; int i=0;    //循环变量 //建立链表及第一个结点 //因为第一个结点是头结点,所以要放在循环

一个例子说明线性链表的简单操作

单向链表中的结点结构如下: typedef struct node { char info; struct node *link; }NODE; 其中数据域存放线性表中元素的值,指针域保存指向下一个元素的指针(即下一个元素的地址).链表中至少需要一个头指针head和表头节点. 其中head是指向向前链表表头的指针,表头是一个特殊的结点,它的数据域不存放普通的数据,而是闲置不用或存放特殊信息,表头节点的指针域存放链表的第一个结点的地址,当单向链表为空时,表头结点的指针域为空值NULL. 例子:利用

单链表的简单操作

单链表是一种最简单的线性表的链式存储结构,单链表又称线性链表,每个数据元素用一个结点来存储,结点分为存放数据元素的data和存放指向链表下一个结点的指针next. 链表实现:(LinkList.h) //单链表 #ifndef LINKLIST_H_ #define LINKLIST_H_ #include <iostream> //using namespace std; template <typename T> struct Node { //数据成员 T data; Nod

C语言链表的简单实用

// //  ViewController.m //  链表 // //  Created by 张凯泽 on 16/1/26. //  Copyright © 2016年 rytong_zkz. All rights reserved. // #import "ViewController.h" /* static 关键字的作用: (1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次, 因此其值在下次调用时仍维持上次的值: (2)在

对带头结点的单链表的简单操作

#pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<memory.h> #define DataType int           //int 可以改写为其它数据类型 typedef struct Node { DataType data; struct Node *next; }Node,*pNode;          //定义结点结构体      

c语言 双向链表的简单操作-创建、插入、删除

数据结构-双向链表的创建.插入和删除 双向链表是数据结构中重要的结构,也是线性结构中常用的数据结构,双向指针,方便用户从首结点开始沿指针链向后依次遍历每一个结点,结点的前驱和后继查找方便. #include <stdio.h> #include <stdlib.h> //双向链表结点的定义 typedef struct dbnode { int data; struct dbnode *prio, *next; }DbNode, linkdblist; //创建双向链表 DbNod

关于链表的一些简单操作

终于上黄金了.. 然后就是一波2连败... 最近 完全不想做题啊  一做题 就想碎觉啊 郁闷死了 根据书本 写了点关于单向链表的简单操作 可能还存在点小bug---先放它一马吧 以后可能再进行补充关于它的操作 毕竟还有好多 先慢慢找回敲键盘打代码的感觉 厌 1 /* 2 线性表之单向链表的一些常见操作 3 */ 4 #include <iostream> 5 using namespace std; 6 7 typedef int ElemType; 8 typedef struct LNod

C语言复习——指针 链表 与 文件操作

刚刚进入大二,准备开始学习C++,对大一所学的C语言一次练习,正好也是赶上老师布置的任务,用C语言写一个  销售管理系统  ,就尽可能的把所学的都用上,也就是结构,指针,文件操作,还有数据结构,本次加入了链表. 用两个函数 Load_LinkList() 和 Save_LinkList() 让链表与文件操作结合,除了打印函数,其他都是在内存中操作链表,这样写更有条理,在创建链表时没有采用书上的用一个中间变量引导,并插入到结点前面,而是直接在链表尾的next申请内存,便于理解,操作也方便. /*首

关于c语言链表的操作

这几天又讲到链表了,但是又忘记了,所以重新把关于链表的建链表,对链表进行排序,然后是删除,插入,以及遍历等功能..但是最近要考试了,所以没有写成菜单的形式..等考试完了,在进行补充吧.. 代码如下... #include<stdio.h> #include<stdlib.h> #include<string.h> struct node { int data; struct node *next; }; int main() { /*建立链表操作*/ int n,x,p