先来个简单的,晚上再把整表删除神马的加上,懒得注释了,贴出来就是给同样考研的同志们做个参考。
话说现在大学折腾的越来越水,当年我们学数据结构的时候单链表就算是五个实验里面第二难的了,最难的是一个二叉树的,最后反正是都没做出来直接往上抄的。其实现在回头看过来倒是不难实现。除此之外单链表一个比较重要的地方就在于今后的许多算法比如树、图都是要在它的基础上实现的(单链表是图和树的子集)。
#include<stdio.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList;
Status GetElem(LinkList L, int i, ElemType *e);
Status ListInsert(LinkList *L, int i, ElemType e);
Status InitList(LinkList *L, int n);
void ShowList(LinkList L);
int main(void)
{
LinkList myList;
InitList(&myList, 9);
ElemType t;
GetElem(myList, 1, &t);
printf("%d",t);
printf("\n");
ShowList(myList);
return 0;
}
Status GetElem(LinkList L, int i, ElemType *e)
{
int j = 1;
LinkList p;
p = L->next;
while(p && j<i)
{
p = p->next;
j++;
}
if(!p || j>i)
{
return ERROR;
}
*e = p->data;
return OK;
}
Status InitList(LinkList *L, int n)
{
LinkList p,r;
int i;
*L =(LinkList)malloc(sizeof(Node));
r = *L;
for(i=0; i<=n; i++)
{
p = (Node*)malloc(sizeof(Node));
p->data = i+1;
r->next = p;
r = p;
}
r->next = NULL;
return OK;
}
void ShowList(LinkList L)
{
LinkList p;
p = L->next;
while(p->next)
{
printf("%d\t", p->data);
p = p->next;
}
}
最后再发个运行结果图: