发一个我不久前学的叫链表的东西【新人劝退向】【你们暂时学不到这么深……真学到这儿……也就习惯了ovo】【就是给你们看下我们近期编的都是些什么】
- #include <stdio.h>
- #include <stdlib.h>
- struct node{
- int data;
- struct node *nextPtr;
- };
- int dataget(struct node*headPtr,int n){
- int i;
- for(i=0;i<n;i++){
- headPtr=headPtr->nextPtr;
- }
- return headPtr->data;
- }
- int main(void){
- struct node* headPtr1=NULL;
- struct node* headPtr2=NULL;
- struct node* headPtr3=NULL;
- struct node* headPtr4=NULL;
- struct node* lastPtr=NULL;
- struct node* currentPtr=NULL;
- struct node* lastPtr0=NULL;
- struct node* currentPtr0=NULL;
- int temp;
- int flag1=0,flag1A=0,flag1B=0,flag2=0;
- int i1=0,i2=0;
- int I1=0,I2=0;
- int F1=0,F2=0;
- int n1=0;
- scanf("%d",&temp);
- if(temp==-1){
- flag1A++;
- }
- if(flag1A==0){
- while(temp!=-1){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=temp;
- }
- if(headPtr1==NULL){
- headPtr1=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- scanf("%d",&temp);
- n1++;
- }
- lastPtr->nextPtr=NULL;
- }
- int n2=0;
- scanf("%d",&temp);
- if(temp==-1){
- flag1B++;
- }
- if(flag1B==0){
- while(temp!=-1){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=temp;
- }
- if(headPtr2==NULL){
- headPtr2=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- scanf("%d",&temp);
- n2++;
- }
- lastPtr->nextPtr=NULL;
- }
- if(flag1A!=0&&flag1B!=0){
- printf("There is no item in A list.\nThere is no item in B list.");
- flag1++;
- }
- if(flag1==0){
- if(flag1A==0&&flag1B==0){
- while(F1==0||F2==0){
- if(F1!=0||F2!=0){
- if(F1!=0){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr2,i2);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- i2++;
- if(i2==n2)
- F2++;
- }
- else{
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr1,i1);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- i1++;
- if(i1==n1)
- F1++;
- }
- }
- else{
- if(dataget(headPtr1,i1)<dataget(headPtr2,i2)){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr1,i1);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- i1++;
- if(i1==n1)
- F1++;
- }
- else if(dataget(headPtr1,i1)>dataget(headPtr2,i2)){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr2,i2);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- i2++;
- if(i2==n2)
- F2++;
- }
- else{
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr1,i1);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- currentPtr0=(struct node*)malloc(sizeof(struct node));
- if(currentPtr0!=NULL){
- currentPtr0->data=dataget(headPtr1,i1);
- }
- if(headPtr4==NULL){
- headPtr4=currentPtr0;
- lastPtr0=currentPtr0;
- }
- else{
- lastPtr0->nextPtr=currentPtr0;
- lastPtr0=currentPtr0;
- }
- i1++;
- i2++;
- flag2++;
- I2++;
- if(i1==n1)
- F1++;
- if(i2==n2)
- F2++;
- }
- }
- I1++;
- }
- }
- if(flag1A!=0){
- while(i2<n2){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr2,i2);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- i2++;
- I1++;
- }
- }
- if(flag1B!=0){
- while(i1<n1){
- currentPtr=(struct node*)malloc(sizeof(struct node));
- if(currentPtr!=NULL){
- currentPtr->data=dataget(headPtr1,i1);
- }
- if(headPtr3==NULL){
- headPtr3=currentPtr;
- lastPtr=currentPtr;
- }
- else{
- lastPtr->nextPtr=currentPtr;
- lastPtr=currentPtr;
- }
- i1++;
- I1++;
- }
- }
- int Flag1=0,Flag2=0;
- printf("The new list A:");
- for(i1=0;i1<I1;i1++){
- if(Flag1==0){
- printf("%d",dataget(headPtr3,i1));
- Flag1++;
- }
- else{
- printf(" %d",dataget(headPtr3,i1));
- }
- }
- printf("\n");
- if(flag2==0){
- printf("There is no item in B list.");
- }
- else{
- printf("The new list B:");
- for(i2=0;i2<I2;i2++){
- if(Flag2==0){
- printf("%d",dataget(headPtr4,i2));
- Flag2++;
- }
- else{
- printf(" %d",dataget(headPtr4,i2));
- }
- }
- }
- }
- }
复制代码 |