#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int date;
struct Node *next;
}LinkList;
/*输出创建的链表*/
void f(LinkList *L)
{
LinkList *s;
s = L->next;
while(s!=NULL)
{
printf("%d ", s->date);
s = s->next;
}
printf("\n");
}
/*头插法创建单链表*/
LinkList* CreateList(int a[], int n)
{
LinkList *s;
int i;
LinkList *L = (LinkList *)malloc(sizeof(LinkList));
L->next = NULL;
for(i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->date = a[i];
s->next = L->next;
L->next = s;
}
f(L);
return L;
}
/*尾插法创建单链表*/
LinkList* LastInsert(int a[], int n)
{
LinkList *s, *r;
int i;
LinkList *L = (LinkList *)malloc(sizeof(LinkList));
r = L;
L->next = NULL;
for(i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->date = a[i];
r->next = s;
r = s;
}
r->next = NULL;
f(L);
return L;
}
/*根据元素的值来查找元素*/
int LocateElem(LinkList *L, int e)
{
LinkList *p = L->next;
int n = 1;
while(p != NULL && p->date != e)
{
p = p->next;
n++;
}
if(p == NULL)
return 0;
else
return n;
}
/*根据元素的位置取出元素的值*/
int get(LinkList *L, int n)
{
LinkList *p = L->next;
int k = 1;
while(p!=NULL && k!=n)
{
p=p->next;
k++;
}
if(p==NULL)
return -1;
else
return p->date;
}
/*插入节点的操作*/
/*
void insert(LinkList *L, int m, int length)
{
LinkList *s;
int i;
for(i)
}
*/
/*链表排序*/
void sort(LinkList *L)
{
LinkList *p = L->next, *pre;
LinkList *r = p->next;
p->next = NULL;
p = r;
while(p != NULL)
{
r = p->next;
pre =L;
while(pre->next != NULL && pre->next->date < p->date)
pre = pre->next;
p->next = pre->next;
pre->next = p;
p =r;
}
f(L);
}
int main(){
int a[10] = {0,1,2,3,4,5,6,7,8,9};
LinkList *L, *s;
L = CreateList(a, 10);
sort(L);
printf("%d \n",LocateElem(L, 2));
printf("%d \n", get(L, 3));
s = LastInsert(a, 10);
printf("%d \n",LocateElem(s, 0));
printf("%d \n", get(s, 12));
return 0;
}
#include <stdlib.h>
typedef struct Node{
int date;
struct Node *next;
}LinkList;
/*输出创建的链表*/
void f(LinkList *L)
{
LinkList *s;
s = L->next;
while(s!=NULL)
{
printf("%d ", s->date);
s = s->next;
}
printf("\n");
}
/*头插法创建单链表*/
LinkList* CreateList(int a[], int n)
{
LinkList *s;
int i;
LinkList *L = (LinkList *)malloc(sizeof(LinkList));
L->next = NULL;
for(i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->date = a[i];
s->next = L->next;
L->next = s;
}
f(L);
return L;
}
/*尾插法创建单链表*/
LinkList* LastInsert(int a[], int n)
{
LinkList *s, *r;
int i;
LinkList *L = (LinkList *)malloc(sizeof(LinkList));
r = L;
L->next = NULL;
for(i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->date = a[i];
r->next = s;
r = s;
}
r->next = NULL;
f(L);
return L;
}
/*根据元素的值来查找元素*/
int LocateElem(LinkList *L, int e)
{
LinkList *p = L->next;
int n = 1;
while(p != NULL && p->date != e)
{
p = p->next;
n++;
}
if(p == NULL)
return 0;
else
return n;
}
/*根据元素的位置取出元素的值*/
int get(LinkList *L, int n)
{
LinkList *p = L->next;
int k = 1;
while(p!=NULL && k!=n)
{
p=p->next;
k++;
}
if(p==NULL)
return -1;
else
return p->date;
}
/*插入节点的操作*/
/*
void insert(LinkList *L, int m, int length)
{
LinkList *s;
int i;
for(i)
}
*/
/*链表排序*/
void sort(LinkList *L)
{
LinkList *p = L->next, *pre;
LinkList *r = p->next;
p->next = NULL;
p = r;
while(p != NULL)
{
r = p->next;
pre =L;
while(pre->next != NULL && pre->next->date < p->date)
pre = pre->next;
p->next = pre->next;
pre->next = p;
p =r;
}
f(L);
}
int main(){
int a[10] = {0,1,2,3,4,5,6,7,8,9};
LinkList *L, *s;
L = CreateList(a, 10);
sort(L);
printf("%d \n",LocateElem(L, 2));
printf("%d \n", get(L, 3));
s = LastInsert(a, 10);
printf("%d \n",LocateElem(s, 0));
printf("%d \n", get(s, 12));
return 0;
}