|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近在看数据结构,找了一个源码在研究可我竟然不知道单项链表还是双向链表,表示好无语,求大家看看
请问区别在哪
- #include<stdio.h>
- #include<malloc.h>
- #define NULL 0
- #define LEN sizeof(List)
- typedef struct node
- {
- int data;
- struct node * next;
- }List;
- int n=0;
- List *create(void)
- {
- List * head;
- List * p1,* p2;
- p1=(List*)malloc(LEN);
- p2=(List*)malloc(LEN);
- head=NULL;
- puts("请输入要插入链表的数据(输入0结束):\n");
- scanf("%d",&p1->data);
- while(p1->data!=0)
- {
- n++;
- if(n==1)
- head=p1;
- else
- p2->next=p1;
- p2=p1;
- p1=(List*)malloc(LEN);
- scanf("%d",&p1->data);
- }
- free(p1);
- p2->next=NULL;
- return head;
- }
- void Print(List * head)
- {
- List * p;
- p=head;
- if(head!=NULL)
- do
- {
- printf("[%d]->",p->data);
- p=p->next;
- }while(p!=NULL);
- }
- int main()
- {
- int m;
- List * head;
- List * pa=(List*)malloc(LEN), *pb=(List*)malloc(LEN);
- List * p1,*p2;
- head=create();
- Print(head);
- printf("\n");
- p1=head;
- pa=p1;
- p2=p1->next;
- pb=p2;
- while(p2->next!=NULL)
- {
- p1->next=p1->next->next;
- p1=p2->next;
- if(p1->next==NULL)
- break;
- p2->next=p2->next->next;
- p2=p1->next;
- }
- p1->next=NULL;
- p2->next=NULL;
- Print(pa);
- printf("NULL\n");
- Print(pb);
- printf("NULL\n");
- //return 0;
- scanf("%d", &m);
- }
复制代码
|
|