|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这段代码我不知道哪里错了,真是裂开了啊,求解决,十分感谢
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct Node{
int data;
struct Node *next;
};
typedef struct Node *List;
List Creat();
List Creat()//创建单链表
{int i,n;
printf("请输入链表的长度:");
scanf("%d",&n);
List L=(List)malloc(sizeof(struct Node));
if(!L)
return NULL;
L->next=NULL;
srand(time(0));
for(i=0;i<n;i++)
{List p=(List)malloc(sizeof(List));
if(!p)
return NULL;
p->data=rand()%100+1;
p->next=NULL;
L->next=p;
L=p;}
return L;
}
void swap(List L,int n);
void swap(List L,int n)/*交换是当前位置和后面一个位置交换*/
{int i;
for(i=1;i<n,i++)
L=L->next;
if(L->next=NULL)
{printf("错误输入\n");
return;}
List L1,L2;
L1=L->next;
L2=L1->next;
L1->next=L2->next;
L->next=L2;
L2->next=L1;
}
}
void print(List L);
void print(List L)//打印链表
{ L=L->next;
int i;
for(i=0;p!=NULL;i++)
{printf("%d",p->data);
p=p->next;}
}
int main()
{List L;
L=Creat();
print(L);
int n;
printf("请输入交换的元素于链表所在位置:");
scanf("%d",&n);
swap(L,n);//这里是不是应该传入地址???
printf("交换后:");
print(L);
return 0;
}
都是一些语法错误和不够细心的问题。。。
- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
- struct Node {
- int data;
- struct Node *next;
- };
- typedef struct Node *List;
- List Creat();
- List Creat()//创建单链表
- {
- int i, n;
- printf("请输入链表的长度:");
- scanf_s("%d", &n);
- List L = (List)malloc(sizeof(struct Node));
- List Head = L;
- if (!L)
- return NULL;
- L->next = NULL;
- srand(time(0));
- for (i = 0; i < n; i++)
- {
- List p = (List)malloc(sizeof(List));
- if (!p)
- return NULL;
- p->data = rand() % 100 + 1;
- p->next = NULL;
- L->next = p;
- L = p;
- }
- return Head; //返回值一般为头节点,而不是尾节点
- }
- void swap(List L, int n);
- void swap(List L, int n)/*交换是当前位置和后面一个位置交换*/
- {
- int i;
- for (i = 1; i < n; i++)
- L = L->next;
- if (L->next == NULL) // =赋值,应该是逻辑等于==
- {
- printf("错误输入\n");
- return;
- }
- List L1, L2;
- L1 = L->next;
- L2 = L1->next;
- L1->next = L2->next;
- L->next = L2;
- L2->next = L1;
- }
- //} //多了个括号。。。
- void print(List L);
- void print(List L)//打印链表
- {
- L = L->next;
- int i;
- for (i = 0; L != NULL; i++)
- {
- printf("%d\t", L->data); //p不知道从哪来的,逻辑上看应该是L
- L = L->next;
- }
- printf("\n");
- }
- int main()
- {
- List L;
- L = Creat();
- print(L);
- int n;
- printf("请输入交换的元素于链表所在位置:");
- scanf_s("%d", &n);
- swap(L, n);//这里是不是应该传入地址???
- printf("交换后:");
- print(L);
- return 0;
- }
复制代码
|
|