您的位置:首页 > 理论基础 > 数据结构算法

链表的基本操作

2014-04-25 20:55 204 查看
网址:http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=1326
这个题的主函数写的有点搓,没有整理,写的太多了

#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct node
{
int data;
node *next;
}LinkList;
void InitList(LinkList *&L)
{
L = (LinkList *)malloc(sizeof(LinkList));
L->next = NULL;
}
void CreateList(LinkList *&L,int a[],int n)
{
LinkList *r = L,*s;
int i;
for(i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->data = a[i];
s->next = r->next;
r->next = s;
}
}
int InsertList(LinkList *&L,int term,int data)
{
LinkList *p = L, *r;
int j = 1;
while(p != NULL && j < term)
{
p = p->next;
j++;
}
if(p == NULL)
return 0;
r = (LinkList *)malloc(sizeof(LinkList));
r->data = data;
r->next = p->next;
p->next = r;
return 1;
}
int GetList(LinkList *L,int term)
{
LinkList *p = L->next;
int j = 1;
while(p)
{
if(j == term)
{
return p->data;
}
p = p->next;
j++;
}
if(j > term)
return 0;
}
int DeleteList(LinkList *L,int term)
{
LinkList *p = L;
int i = 1;
while(p && i <term)
{
p = p->next;
i++;
}
if(p == NULL)
return 0;
p->next = p->next->next;
return 1;
}
void DispList(LinkList *L)
{
LinkList *p = L->next;
while(p->next)
{
printf("%d ",p->data);
p = p->next;
}
printf("%d\n",p->data);
}
int main()
{
LinkList *L;
InitList(L);
int n,a[100],i;

scanf("%d",&n);

for(i = 0; i < n; i++)
scanf("%d",&a[i]);

CreateList(L,a,n);

scanf("%d",&n);

char str[100];

for(i = 0; i < n; i++)
{

scanf("%s",str);

if(!strcmp(str,"get"))
{
int n;
scanf("%d",&n);
int x = GetList(L,n);
if(x)
printf("%d\n",x);
else
printf("get fail\n");
}

if(!strcmp(str,"insert"))
{
int aa,ee;
scanf("%d%d",&aa,&ee);
if(InsertList(L,aa,ee))
printf("insert OK\n");
else
printf("insert fail\n");
}

if(!strcmp(str,"delete"))
{
int aaa;
scanf("%d",&aaa);
if(DeleteList(L,aaa))
printf("delete OK\n");
else
printf("delete fail\n");
}

if(!strcmp(str,"show"))
{
if(L->next == NULL)
printf("Link list is empty\n");
else
DispList(L);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 链表