美文网首页
C语言struct\typedef\单链表\指针

C语言struct\typedef\单链表\指针

作者: 啦啦啦_9a5f | 来源:发表于2019-06-26 12:54 被阅读0次

1.指针:指针的实质就是地址。

2.指针变量;变量在编译的时候系统要为它分配一个地址,如用另一个变量来存放这个地址,那么这个变量就叫指向变量的指针地址

指针变量就是用来存放指正的变量,他的值是另一个变量的地址。

例:

int *p;//指向整形变量的指针,用来存放整形变量的地址。

int a[5];int *q = a;//指向数组第0个元素的指针变量,a代表的是第0个元素的起始地址。

char *string = "hello";//指向字符串的指针变量,string 是一个指针变量,用来存放字符串的首地址

int(*foo)(int x,int y);//指向函数的指针变量

3.struct

通过普通的数据类型组合成新的自定义的数据类型。

struct Pixel{

  unsigned char Red;

  unsigned char Green;

  unsigned char Blue;

}

声明方法:struct + 结构体名

struct Pixel Pixel1,Pixel2;

4.使用typedef struct

typedef struct {

  unsigned char Red;

  unsigned char Green;

  unsigned char Blue;

}Pixel;

Pixel pixel1,pixel2;//可以不用使用struct声明

5.设计一个递归算法,删除不带头结点的单链表L中所有值为x 的结点

#include <iostream>

#include <stdlib.h>

#include <stdio.h>using namespace std;

//设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点

typedef struct Lnode{

    int data;

    struct Lnode *next;//定义LinkList类型的指针变量,指向LinkList类型的数据}Lnode,*LinkList;//Lnode数据类型,就像定义普通数据类型一样

//定义LinkList类型的指针变量,指向LinkList类型的数据

void init_LinkList(LinkList &L){

    int x;

    L = (LinkList)malloc(sizeof(Lnode));

    Lnode *r = L,*p;

    cout<<"请输入数据(-1退出):";

    cin>>x;

    while(x != -1){

        p = (Lnode*)malloc(sizeof(Lnode));

        p->data = x;

        p->next = NULL;

        r->next = p;

        cout<<p->data<<" "<<p<<" "<<p->next<<endl; 

        r = p;

        cout<<"请输入数据(-1退出):";

        cin>>x; 

      }

}

void delect_x(int x,LinkList &L){

//1.如果L.next == NULL,那么递归结束,退出

    if(L->next == NULL){return;}

//2.如果L.data == x,那么删除x ,delect_x(l.next,x)

    if(L->data == x){

        Lnode *p = L;

        L = L->next;//不会出现断链因为本层的L是上层的L->next,将本层的L赋值为L->next,实质是将L上层的next赋值为L下层的next

        free(p);

        cout<<p->data<<endl;

        delect_x(x,L);

} else{

        delect_x(x,L->next); //3.如果L.data != x ,那么直接执行delet_x(l.next,x)

    }

}

int main(){

    LinkList L,p;

    init_linklist(L);

    p = L;

    while(p != NULL){

        cout<<p->data<<" ";

        p = p->next;

    }

    delect_x(4,L);

    p = L;

    while(p != NULL){

        cout<<p->data<<" ";

        p = p->next;

    }

}

相关文章

网友评论

      本文标题:C语言struct\typedef\单链表\指针

      本文链接:https://www.haomeiwen.com/subject/xnfccctx.html