标签:
没事的时候多敲敲代码:
#include "stdio.h" #include "stdlib.h" #include "time.h" typedef struct Node { int data; struct Node *next; }Node,* Linklist; //构造头结点,让L指向头结点 int Initlist(Linklist &L) { L = (Linklist)malloc(sizeof(Node)); //产生头结点,让L指向头结点 if(!L){ //内存分配错误 return 0; } L->next = NULL; //指针域为空 return 1; } //计算Link的长度 int ListLength(Linklist L) { Linklist p; int i=0; p = L->next; while(p){ p = p->next; i++; } return i; } int ListTraverse(Linklist L) { Linklist p; p = L->next; while(p){ printf("%d ",p->data); p = p->next; } printf("\n"); return 1; } //在第i个节点(不包括头结点)之前插入新的节点 int ListInsert(Linklist &L,int i,int e) { int j; Linklist p,s; p = L; j = 1; while (p && j < i) /* 寻找第i个结点 */ { p = p->next; ++j; } if (!p) return 0; /* 第i个元素(包括头结点)不存在 */ s = (Linklist)malloc(sizeof(Node)); /* 生成新结点(C语言标准函数) */ s->data = e; s->next = p->next; /* 将p的后继结点赋值给s的后继 */ p->next = s; /* 将s赋值给p的后继 */ return 1; } //头插法 (在链表的第一个节点之前插入新节点) int CreatHead(Linklist &L) { Linklist p; int i; srand(time(0)); //初始化随机数种子 for( i=1;i<10;i++){ p = (Linklist)malloc(sizeof(Node)); //生成新节点 p->data = rand()%100+1; p->next = L->next; L->next = p; } return 1; } //尾插法 int CreatTail(Linklist &L) { Linklist p,r; int i; r = L; for(i=1;i<10;i++){ p = (Linklist)malloc(sizeof(Node)); //生成新节点 p->data = i; r->next = p; r = p; } r->next = NULL; return 1; } int main() { Linklist L; int i,j; i = Initlist(L); // printf("%d",i); printf("Linklist的长度为:%d\n",ListLength(L)); // CreatHead(L); //头插法 CreatTail(L); //尾插法 printf("Linklist的长度为:%d\n",ListLength(L)); ListTraverse(L); return 0; }
标签:
原文地址:http://www.cnblogs.com/heyijing/p/4821445.html