链表操作

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值