现在的位置: 首页 > 综合 > 正文

单链表的建立、输出、倒置旋转

2013年09月15日 ⁄ 综合 ⁄ 共 1103字 ⁄ 字号 评论关闭

声明结构体类型的形式:

sturct 结构体类型名

成员表列;

 

定义结构体类型变量的三种方法:

1、类型名+变量名;

 

2、struct 结构体名

成员列表

}变量名表列;

 

3、sturct

成员列表

}变量名列表;  //较少使用

 

typedef 在结构体中的用法

 

typedef struct a
{char  input;
a *p_input;
}a,*b;

 

等同于

 

typedef struct a
{char  input;
a *p_input;
}*b;

其中声明了了b为结构体指针类型(a *):  typedef a *b;

 

如typedef char * STRING //声明STRING为字符指针类型

STRING p,s[10];             //p为字符指针变量,s为指针数组(含10个元素)

 

程序如下:

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

typedef struct LNode{
 int data;
 struct LNode *next;
}LNode,*Linklist;

 

Linklist CreateList_L(Linklist L,int n) //构建单链表
{
 L=(Linklist)malloc(sizeof(LNode));
 L->next=NULL;
 Linklist p;
 for(int i=n;i>0;i--){
  p=(Linklist)malloc(sizeof(LNode));
  scanf("%d",&(p->data));
  p->next=L->next;
  L->next=p;//插到表头
 }
 return L;
}

void OutputList_L(Linklist L,int n) //输出单链表值
{
 Linklist p;
 p=L->next;
 for(int i=0;i<n;i++){
  printf("%d  ",p->data);
  p=p->next;
 }
 printf("/n");
}

 

Linklist Inversion(Linklist L) //链表倒置
{
 Linklist Newp=NULL,Nowp,Oldp; //定义三个节点标记
 Oldp=L->next;
 while(Oldp){
  Nowp=Oldp;
  Oldp=Oldp->next;
  Nowp->next=Newp;
  Newp=Nowp;
 }
 L->next=Newp;
 return L;
}

 

void main()
{
 Linklist L;
 L=CreateList_L(L,4);
 OutputList_L(L,4);
 int i;
 L=Inversion(L);
 OutputList_L(L,4);

}

抱歉!评论已关闭.