*석*
개인
판매자 정보
- 학교정보
-
입력된 정보가 없습니다.
- 직장정보
-
입력된 정보가 없습니다.
- 자격증
-
판매지수
-
- 판매중 자료수
- 3개
-
- 전체 판매량
- 12개
-
- 최근 3개월 판매량
- 0개
-
- 자료후기 점수
- 평균B
-
- 자료문의 응답률
- -
전체자료 3개
-
-
[컴퓨터공학] list
-
#include #include //---------------------------------------------------typedef struct poly_node{int coef;int expon;struct poly_node *link;};typedef struct poly_node *poly_pointer;// poly_pointer ptr = NULL;//----------------------------------------------------void attach(int ,int ,poly_pointer *) ;int COMPARE(int a, int b) ;void input1(poly_pointer a) ;void input2(poly_pointer c) ;void padd(poly_pointer a, poly_pointer b, poly_pointer *front) ;main(){poly_pointer ptr ;poly_pointer ptr2 ;poly_pointer result ;// poly_pointer temp ;poly_pointer header1 ;ptr=(poly_pointer)malloc(sizeof(poly_pointer));ptr2=(poly_pointer)malloc(sizeof(poly_pointer));result = (poly_pointer)malloc(sizeof(poly_pointer));// temp = (poly_pointer)malloc(sizeof(poly_pointer));input1(ptr) ;header1 = ptr ;while(header1 != NULL){printf("%dX^%d ", header1->coef, header1->expon) ;header1 = header1->link ;}printf ("n");input2(ptr2);header1 = ptr2 ;while(header1 != NULL){printf("%dX^%d ", header1->coef, header1->expon) ;header1 = header1->link ;}printf ("n");padd(ptr, ptr2, &result) ;while(result){printf("%dX^%d ", result->coef, result->expon) ;result = result->link ;}printf ("n");}void input1(poly_pointer a){/* 두개의 노드를 가진 연결리스트 생성 */poly_pointer b;// a=(poly_pointer)malloc(sizeof(poly_pointer));b=(poly_pointer)malloc(sizeof(poly_pointer));a->coef=10;a->expon=2;a->link=b;b->coef=5;b->expon=1;b->link=NULL;}void input2(poly_pointer c){/* 두개의 노드를 가진 연결리스트 생성 */poly_pointer d;// c=(poly_pointer)malloc(sizeof(poly_pointer));d=(poly_pointer)malloc(sizeof(poly_pointer));c->coef=3;c->expon=3;c->link=d;d->coef=5;d->expon=0;d->link=NULL;}//---------------------------------------------------void padd(poly_pointer a, poly_pointer b, poly_pointer *front){ /* a와 b가 합산된 다항식을 반환 */poly_pointer rear, temp;int sum;rear = (poly_pointer)malloc(sizeof(poly_pointer));// if (IS_FULL(rear)) {// fprintf(stderr, "The memory is fulln");// exit(1);// }*front = rear;//---------------------------------------------------while(a && b)switch (COMPARE(a->expon, b->expon)) {case -1: /* a->expon < b->expon */attach(b->coef,b->expon,&rear);b = b->link; break;case 0: /* a->expon = b->expon */sum = a->coef + b->coef;if (sum) attach(sum,a->expon,&rear);a = a->link; b->link; break;case 1: /* a->expon > a->expon */attach(a->coef,a->expon,&rear);a = a->link;}//-----------------------------------------------------/* 리스트 a와 리스트 b의 나머지를 복사 */for (; a; a = a->link) attach(a->coef,a->expon,&rear);for (; b; b = b->link) attach(b->coef,b->expon,&rear);rear->link = NULL;/* 필요없는 초기 노드를 삭제 */temp = *front;*front = (*front)->link;// return *front;}//-------------------------------------------------------void attach(int coefficient, int exponent, poly_pointer *ptr){/* coef=coefficient이고 expon=exponent인 새로운 노드를 생성하고,그것을 ptr에 의해 참조되는 노드에 첨가한다. ptr을 갱신하여 이 새로운노드를 참조하도록 한다. */poly_pointer temp;temp = (poly_pointer)malloc(sizeof(poly_pointer));// if (IS_FULL(temp)) {// fprintf(stderr, "The memory is fulln");// exit(1);// }//-------------------------------------------------------temp->coef = coefficient;temp->expon = exponent;(*ptr)->link = temp;*ptr = temp;}int COMPARE(int a, int b){if (a > b)return 1 ;else if(a == b)return 0 ;elsereturn -1 ;}
-
공학/기술|
2003.11.26|
3페이지| 1,000원|
조회(221)
-
미리보기
-
-
[컴퓨터공학] infix-prefix
평가B괜찮아요
-
#include #include #define MAX_STACK_SIZE 100#define MAX_EXPR_SIZE 100void postfix(void);typedef enum {lparen, rparen, plus, minus, times, divide, mod, eos, operand} precedence;int stack[MAX_STACK_SIZE];char expr[MAX_EXPR_SIZE];int isp[]={0, 19, 12, 12, 13, 13, 13, 0};int icp[]={20, 19, 12, 12, 13, 13, 13, 0};main(){printf("Input the expression : ");gets(expr);postfix();}precedence Delete(int *top){int token;if (*top == -1) {printf("Stack is empty. n");exit(1);}token = stack[(*top)]; (*top)--; return token;// return stack[(*top)--];}void add(int *top, precedence item){if (*top >= MAX_STACK_SIZE-1) {printf("Stack is full. n");exit(1);}++(*top); stack[*top] = item;// stack[++*top] = item;}void print_token(precedence token){if (token == plus) printf("+");else if (token == minus) printf("-");else if (token == times) printf("*");else if (token == divide) printf("/");else if (token == mod) printf("%");else printf ("%c", token);}precedence get_token(char *symbol, int *n){*symbol = expr[(*n)++];switch (*symbol) {case '(' : return lparen;case ')' : return rparen;case '+' : return plus;case '-' : return minus;case '*' : return times;case '/' : return divide;case '%' : return mod;case '