|
5鱼币
#include "stdio.h"
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}slink;
slink *cresclink(int n)
{
slink *head,*p,*s;
int i;
p=head=(slink *)malloc(sizeof(slink));
for(i=1;i<=n;i++)
{
s=(slink *)malloc(sizeof(slink));
scanf("%d",&s->data);
p->next=s;
p=s;
}
p->next=head;
return head;
}
int insert(slink *head,int i,ElemType x)
{
slink *p,*q;int j;
if(i<1)return 0;
p=head;j=0;
while(p->next!=head&&j<i-1)
{p=p->next;j++;}
if((p->next!=head)||(p->next==head&&j==i-1))
{
q=(slink *)malloc(sizeof(slink));
q->data=x;
q->next=p->next;
p->next=q;
return 1;
}
else return 0;
}
int delete(slink *head,int i,ElemType *e)
{
slink *p,*q;int j;
p=head;j=0;
while(p->next!=head&&j<i-1)
{p=p->next;j++;}
if(p->next==head)return 0;
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return 1;
}
void list(slink *head)
{
slink *p=head->next;
while(p!=head)
{printf("%4d",p->data);
p=p->next;}
printf("\n");
}
int main()
{
int n;
printf("please input n:");
scanf("%d",&n);
return 0;
}
问一下这个int main()里要填入些什么东西,基本不懂代码完全按照课本上面打的 建立的是一个带头结点单向循环链表 插入元素 删除元素 输出带头结点的单链表
不是你的代码
尝试仔细分析代码写写注释。
尝试把代码格式化好,不要给自已添堵。 #include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}slink;
slink *cresclink(int n)
{
slink *head, *p, *s;
int i;
p = head = (slink *)malloc(sizeof(slink));
for(i=1; i<=n; i++)
{
s = (slink *)malloc(sizeof(slink));
scanf("%d", &s->data);
p->next = s;
p = s;
}
p->next = head;
return head;
}
int insert(slink *head, int i, ElemType x)
{
slink *p,*q;
int j;
if(i<1) return 0;
p=head; j=0;
while( p->next!=head && j<i-1)
{
p = p->next;
j++;
}
if( (p->next!=head) || (p->next==head && j==i-1) )
{
q = (slink *)malloc(sizeof(slink));
q->data = x;
q->next = p->next;
p->next = q;
return 1;
}
else return 0;
}
int delete(slink *head, int i, ElemType *e)
{
slink *p, *q;
int j;
p=head; j=0;
while( p->next!=head && j<i-1 )
{
p = p->next;
j++;
}
if(p->next==head) return 0;
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return 1;
}
void list(slink *head)
{
slink *p = head->next;
while( p!=head )
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
int n, i, e;
slink *head; // 声明头指针
printf("please input n:");
scanf("%d",&n);
// 1.创建链表
head = cresclink(n); // 该函数返回的是 头指针
// 2.通常创建好后就把数据显示一遍
list(head); // 把头指针传进入
// 3. 测试 插入 功能
printf("请输入要插入元素(位置 元素):");
scanf("%d", &i);
scanf("%d", &e);
if(insert(head, i, e)) // 参数(头指针,插入位置, 要插入的元素),返回值1成功,0失败
{
printf("在位置%d插入%d成功。\n", i, e);
}
else
{
printf("%d插入失败!\n");
}
// 4. 数据显示一遍
list(head);
// 5. 测试 删除 功能
printf("请输入要删除元素的位置:");
scanf("%d", &i);
if(delete(head, i, &e)) // 参数(头指针,要删除的位置, 返回删除的元素),返回值1成功,0失败
{
printf("删除位置%d的元素%d成功。\n", i, e);
}
else
{
printf("位置%d的元素失败!\n", i);
}
// 6. 数据显示一遍
list(head);
return 0;
}
|
最佳答案
查看完整内容
不是你的代码
尝试仔细分析代码写写注释。
尝试把代码格式化好,不要给自已添堵。
|