创建单链表
1 // practice32.cpp : Defines the entry point for the console application. 2 // 3 #include "StdAfx.h" 4 #include<malloc.h> // malloc()等 5 #include<stdlib.h> // atoi() 6 #include <stdio.h> 7 8 typedef int ElemType; 9 10 // 线性表的单链表存储结构 11 struct LNode 12 { 13 ElemType data; 14 LNode *next; 15 }; 16 typedef LNode *LinkList; // 另一种定义LinkList的方法 17 18 // 操作结果:构造一个空的线性表L 19 int InitList(LinkList &L) 20 { 21 L=(LinkList)malloc(sizeof(LNode)); // 产生头结点,并使L指向此头结点 22 if(!L) // 存储分配失败 23 return 0; 24 L->next=NULL; // 指针域为空 25 return 1; 26 } 27 // 正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表 28 void CreateList2(LinkList &L,int n) 29 { 30 int i; 31 LinkList p,q; 32 L=(LinkList)malloc(sizeof(LNode)); // 生成头结点 33 L->next=NULL; 34 q=L; 35 printf("请输入%d个数据\n",n); 36 for(i=1;i<=n;i++) 37 { 38 p=(LinkList)malloc(sizeof(LNode)); 39 scanf("%d",&p->data); 40 q->next=p; 41 q=q->next; 42 } 43 p->next=NULL; 44 } 45 46 int ListTraverse(LinkList L) 47 { 48 LinkList p; 49 p = L->next; 50 while(p) 51 { 52 printf("%d ",p->data); 53 p = p->next; 54 } 55 printf("\n"); 56 return 1; 57 } 58 59 int main(int argc, char* argv[]) 60 { 61 int n=5; 62 LinkList La; 63 64 CreateList2(La,n); // 正位序输入n个元素的值 65 printf("La="); // 输出链表La的内容 66 ListTraverse(La); 67 68 return 0; 69 }