1、有序表的合并(链表实现)
# include<stdio.h>
# include<malloc.h>
# include<stdlib.h>
typedef struct Node{
int data;
struct Node * pNext;
}NODE, * PNODE;
PNODE createList();
PNODE createList1(int len);
void listMerge(PNODE pHead1, PNODE pHead2, PNODE pHead3);
void traverseList(PNODE pHead);
int lengthList(PNODE pHead);
int main(void){
int len = lengthList(pHead1) + lengthList(pHead2);;
PNODE pHead1 = NULL;
PNODE pHead2 = NULL;
PNODE pHead3 = NULL;
pHead1 = createList();
traverseList(pHead1);
pHead2 = createList();
traverseList(pHead2);
pHead3 = createList1(len);
listMerge(pHead1, pHead2, pHead3);
traverseList(pHead3);
retrun 0;
}
PNODE createList(){
int i;
int val;
int len;
printf("请输入链表的长度:len = ");
scanf("%d", &len);
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(NULL == pHead){
printf("内存分配失败!");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;
for(i = 0; i< len; i++){
printf ("请输入第%d个节点的值:val = ", i+1);
scanf("%d", &val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew){
printf("内存分配失败!");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pTail = pNew;
}
pTail->pNext = NULL;
return pHead;
}
PNODE createList1(int len){
int i;
int val;
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(NULL == pHead){
printf("内存分配失败!");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;
for(i = 0; i < len; i++){
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew){
printf("内存分配失败!");
exit(-1);
}
pNew->data = 0;
pTail->pNext = pNew;
pTail = pNew;
}
pTail->pNext = NULL;
return pHead;
}
void listMerge(PNODE pHead1, PNODE pHead2, PNODE pHead3){
int i;
int len = lengthList(pHead3);
PNODE p = pHead1->pNext;
PNODE q = pHead2->pNext;
PNODE x = pHead3->pNext;
printf("test!!!");
while(NULL != p && NULL != q){
if(p->data <= q->data)
{
x->data = p->data;
p = p->pNext;
x = x->pNext;
}
else
{
x->data = q->data;
q = q->pNext;
x = x->pNext;
}
}
while(NULL != p){
x->data = p->data;
p = p->pNext;
x = x->pNext;
}
while(NULL != q){
x->data = q->data;
q = q->pNext;
x = x->pNext;
}
}
void traverseList(PNODE pHead){
PNODE p = pHead->pNext;
while(NULL != p){
printf("%d ", p->data);
p = p->pNext;
}
printf("\n");
return;
}
int lengthList(PNODE pHead){
int len = 0;
PNODE p = pHead->pNext;
while(NULL != p){
len++;
p = p->pNext;
}
return len;
}
**
2、多项式运算(数组实现)